PostgreSQL In条件

在本节中,我们将了解PostgreSQL IN 条件的工作原理,它与WHERE子句一起用于从定义的条件满足 IN 条件的表中获取数据。IN 运算符和带有子查询的 IN 运算符的示例。

PostgreSQL IN条件介绍

PostgreSQL IN 条件在WHERE 子句中用于获取与列表中的任何数据匹配的数据。换句话说,我们可以说IN 条件用于减少多个OR 条件

PostgreSQL IN 条件语法

PostgreSQL中,IN 条件可以与SELECTINSERTUPDATEDELETE 命令一起使用。

Expression IN (SELECT column_name FROM table_name);  

或者

expression IN (value1, value2, .... valueN);    

我们可以将上述语法写在下面,因为括号内称为子查询,即嵌套在另一个语句中的语句。

Expression IN (subquery);  

在上面的语法中,我们使用了以下参数:

范围 描述
Expression/ value 它用于定义列或字段。
value1, value2, .... valueN 如果这些值中的任何一个与表达式匹配,则IN 条件将返回 true。这是一种快速评估值是否与表达式匹配的方法。
Subquery 这是一个 SELECT 命令,其中将检查表达式是否矛盾的输出。

注意:

  • 如果值与给定列表中的任何值匹配,则PostgreSQL IN 条件将返回true ,即value1, value2 ,....valueN,,并且这些值列表可以是文字值列表。例如,字符串、数字或 SELECT 命令的输出。

PostgreSQL IN 条件示例

让我们看不同的例子来理解 PostgreSQL IN 条件是如何工作的:

PostgreSQL IN 条件示例:具有字符值

为此,我们正在使用employee表来获取emp_fname的员工信息,其中包含John和Ava员工。

我们正在使用带有 WHERE 子句的IN 运算符,因为我们可以看到以下命令:

SELECT *  
FROM employee  
WHERE emp_fname IN ('John', 'Ava')  
ORDER BY emp_id DESC;  

执行上述命令后,我们将得到以下结果:

在上面的示例中,PostgreSQL IN 条件将返回employee表中emp_fname为'John' 和 'Ava' 的所有行。

在上面的命令中,我们在SELECT中使用 (*) ,这意味着employee表中的所有字段都将显示在输出中。

在下面的命令中,我们使用OR 和等于 (=)运算符代替IN 运算符。该语句等同于上面的命令:

SELECT *  
FROM employee  
WHERE emp_fname ='John' OR emp_fname ='Ava'  
ORDER BY emp_id DESC;  

成功执行上述命令后,我们将得到以下结果:

正如我们在上图中看到的那样,两个输出都提供了相似的结果,但是与OR 和等于 (=) 运算符相比,使用PostgreSQL IN 条件使命令更易于阅读并且更高效。

PostgreSQL IN 条件示例:使用数值

要查看PostgreSQL IN 运算符示例,我们将从Javatpoint数据库中获取部门表。

假设,我们想知道emp_id 1,2, 3的部门信息。因此,为此,我们在 WHERE 子句中使用IN 运算符,因为我们可以看到以下命令:

SELECT emp_id, dept_id, emp_fname, dept_name  
FROM department  
WHERE emp_id IN (1, 2,3)  
ORDER BY dept_name DESC;  

执行上述命令后,我们将得到以下输出:

在上面的命令中,我们还可以使用OR 和等号 (=)运算符代替IN 运算符。该语句等同于上面的命令:

SELECT emp_id, dept_id, emp_fname, dept_name  
FROM department  
WHERE emp_id=1 OR emp_id=2 OR emp_id=3  
ORDER BY dept_name DESC;  

执行上面的语句后,我们会得到如下结果:

执行这两个命令后,我们清楚地看到,与使用OR 和等于 (=) 运算符的命令相比,使用IN 运算符的命令更具可读性,而且更短。

换句话说,我们可以说PostgreSQL使用IN 运算符执行命令比使用OR 运算符列表更快。

热门文章

优秀文章