📜  PostgreSQL IN条件

📅  最后修改于: 2020-11-30 09:00:10             🧑  作者: Mango

PostgreSQL IN条件

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

PostgreSQL IN条件的介绍

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

PostgreSQL IN条件语法

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

Expression IN (SELECT column_name FROM table_name);

要么

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

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

Expression IN (subquery);

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

Parameter Description
Expression/ value It is used to define a column or field.
value1, value2, …. valueN If any of these values match the expression, then the IN condition will return true.
It is a quick method to assess if any one of the values matches the expression.
Subquery It is a SELECT command where the output will be checked in contradiction of expression.

注意:

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

PostgreSQL IN条件的示例

让我们看不同的例子来了解PostgreSQL IN条件的工作原理:

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

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

我们将IN运算符与WHERE子句一起使用,因为我们可以看到以下命令:

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

输出量

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

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

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

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

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

输出量

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

如上图所示,两个输出都提供相似的结果,但是与OR和Equal(=)运算符相比,使用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和equal(=)运算符代替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和Equal(=)运算符的命令相比,使用IN运算符的命令更具可读性,并且更简短。

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

带有子查询的PostgreSQL IN示例

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

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

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

输出量

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

正如我们在上面的屏幕截图中可以看到的那样,该命令返回一个值列表,我们可以将其用作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 Condition部分中,我们学习了以下主题:

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