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条件将从 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 与 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;
 
   
  
  输出 
 
 执行上述命令后,我们将获得以下输出: 
 
 
 
 在上面的命令中,我们也可以使用 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;
 
   
  
  输出 
 
 执行上述语句后,我们将得到以下结果: 
 
 
 
 在完成这两个命令之后,我们清楚地看到,使用 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;
 
   
  
  输出 
 
 执行上述命令后,我们将得到以下结果: 
 
 
 
 在上面的屏幕截图中,我们可以看到该命令返回值列表,我们可以将其用作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运算符结合使用,以从两个表中获取值。