📅  最后修改于: 2020-11-30 09:00:10             🧑  作者: Mango
在本节中,我们将了解PostgreSQL IN条件的工作原理,该条件与WHERE子句一起使用,以从已定义条件满足IN条件的表中获取数据。示例IN运算符,以及带有子查询的IN运算符。
在WHERE子句中使用PostgreSQL IN条件来获取与列表中的任何数据匹配的数据。换句话说,我们可以说IN条件用于减少多个OR条件。
在PostgreSQL中,IN条件可以与SELECT , INSERT , UPDATE和DELETE命令一起使用。
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. |
注意:
让我们看不同的例子来了解PostgreSQL IN条件的工作原理:
为此,我们使用employee表获取具有John和Ava雇员的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运算符示例,我们将从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运算符列表更快地实现命令。
在以下命令中,我们将使用CAST()函数,该函数将任何类型的值更改为指定的数据类型。
在下面的示例中, CAST()用于转换Joining_date AS Date数据类型,从Joining_date为2020-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部分中,我们学习了以下主题: