PostgreSQL教程

PostgreSQL IN

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

PostgreSQL IN条件简介

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

PostgreSQL IN条件语法

在 PostgreSQL 中, IN条件可以与 SELECT , INSERT , UPDATE 和删除命令。
Expression IN (SELECT column_name FROM table_name);
OR
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 员工
我们正在使用 IN运算符使用WHERE子句,我们可以看到以下命令:
SELECT *
FROM employee
WHERE emp_fname IN ('John', 'Ava')
ORDER BY emp_id DESC;
输出
在执行上述命令时,我们将得到以下结果:
PostgreSQL IN Condition
在上面的示例中,PostgreSQL IN条件将从 employee 表返回所有行。 emp_fname 是'John'和'Ava'。
在上述命令中,我们在 SELECT 中使用(*) strong>,这意味着 employee 表中的所有字段都将显示在输出中。
在以下命令中,我们使用 OR和等于(=)运算符代替 IN运算符。该语句等效于以上命令:
SELECT *
FROM employee
WHERE emp_fname ='John' OR emp_fname ='Ava'
ORDER BY emp_id DESC;
输出
成功执行以上命令后,我们将得到以下结果:
PostgreSQL IN Condition
如上图所示,两个输出都提供相似的结果,但是使用 PostgreSQL IN condition 与 OR和等于(=)运算符相比,该命令更易于阅读,效率更高。

PostgreSQL IN条件的示例: 带有数字值

要查看 PostgreSQL IN运算符示例,我们将从 lidihuo 数据库中获取 department 表。
假设我们想知道 emp_id 1,2和3 的department信息。因此,为此,我们在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 Condition
在上面的命令中,我们也可以使用 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 Condition
在完成这两个命令之后,我们清楚地看到,使用 IN运算符的命令更具可读性,并且比起简短到使用 OR和等于(=)运算符的命令。
换句话说,我们可以说 PostgreSQL 使用 IN运算符比使用 OR运算符列表更快。

带有子查询的PostgreSQL IN示例

在以下命令中,我们将使用 CAST()函数,该函数会将任何类型的值更改为指定的数据类型。
在下面的示例中, CAST()用于转换 Joining_date AS Date 数据类型,返回 department 表中的emp_id ,其中加入日期为 2020-06-22:
SELECT emp_id
FROM department
WHERE CAST (Joining_date AS Date) = '2020-06-22'
ORDER BY emp_id;
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL IN Condition
在上面的屏幕截图中,我们可以看到该命令返回值列表,我们可以将其用作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 Condition 部分中,我们学习了以下主题:
使用PostgreSQL IN运算符查找值是否与值列表中的任何值匹配。 我们使用 IN条件从特定表中获取角色。 我们使用 IN条件从特定表中获取数字。 我们将子查询概念与 PostgreSQL IN运算符结合使用,以从两个表中获取值。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4