PostgreSQL IN Condition


PostgreSQL IN Condition

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

PostgreSQL IN条件介绍

PostgreSQL的IN条件是内使用WHERE子句来获得那些任何数据列表中匹配的数据。换句话说,我们可以说IN 条件用于减少多个OR 条件。

PostgreSQL IN 条件语法

在PostgreSQL 中,IN 条件可以与SELECT、INSERT、UPDATE和DELETE 命令一起使用。

  1. 表达式 IN (SELECT column_name FROM table_name);

或者

Expression IN (SELECT column_name FROM table_name);

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

Expression IN (subquery);

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

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

笔记:

  • PostgreSQL的IN条件将返回如果值匹配在给定列表中的任何值,这是值1,值2,...值N,以及这些值列表可以是一个列表文字值。例如,字符串、数字或 SELECT 命令的输出

PostgreSQL IN 条件示例

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

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

为此,我们使用employee\表来获取具有JohnAva雇员的emp_fname雇员信息

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

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

输出

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

PostgreSQL IN 条件

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

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

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

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

输出

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

PostgreSQL IN 条件

正如我们在上图中所见,两个输出都提供了相似的结果,但与OR 和 Equal (=) Operators相比,使用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;

输出

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

PostgreSQL IN 条件

在上面的命令中,我们还可以使用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;

输出

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

PostgreSQL IN 条件

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

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

带有子查询的 PostgreSQL IN 示例

在以下命令中,我们将使用CAST()函数,它将任何类型的值更改为指定的数据类型。

在下面的示例中,CAST()用于转换Joining_date AS Date数据类型从部门\表中返回一个emp_id列表,其中Joining_date2020-06-22:

SELECT emp_id  
FROM department  
WHERE CAST (Joining_date AS Date) = '2020-06-22'  
ORDER BY emp_id;

输出

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

PostgreSQL IN 条件

正如我们在上面的屏幕截图中可以看到该命令返回一个值列表,我们可以将其用作 IN 运算符的输入,如下面的命令所示:

SELECT emp_id, emp_fname, emp_lname  
FROM employee  
WHERE emp_id IN (  
        SELECT emp_id  
        FROM department  
        WHERE CAST (Joining_date AS DATE) = '2020-06-22'  
)  
ORDER BY emp_id;

输出

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

PostgreSQL IN 条件

概述

PostgreSQL IN 条件部分,我们学习了以下主题:

  • 使用 PostgreSQL IN 运算符来查找值是否与值列表中的任何值匹配。
  • 我们使用IN 条件从特定表中获取字符
  • 我们使用IN 条件从特定表中获取数字
  • 我们使用带有PostgreSQL IN 运算符子查询概念来从两个表中获取值。