PostgreSQL In条件
在本节中,我们将了解PostgreSQL IN 条件的工作原理,它与WHERE子句一起用于从定义的条件满足 IN 条件的表中获取数据。IN 运算符和带有子查询的 IN 运算符的示例。
PostgreSQL IN条件介绍
PostgreSQL IN 条件在WHERE 子句中用于获取与列表中的任何数据匹配的数据。换句话说,我们可以说IN 条件用于减少多个OR 条件。
PostgreSQL IN 条件语法
在PostgreSQL中,IN 条件可以与SELECT、INSERT、UPDATE和DELETE 命令一起使用。
Expression IN (SELECT column_name FROM table_name);
或者
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员工。
我们正在使用带有 WHERE 子句的IN 运算符,因为我们可以看到以下命令:
SELECT *
FROM employee
WHERE emp_fname IN ('John', 'Ava')
ORDER BY emp_id DESC;
执行上述命令后,我们将得到以下结果:
在上面的示例中,PostgreSQL IN 条件将返回employee表中emp_fname为'John' 和 'Ava' 的所有行。
在上面的命令中,我们在SELECT中使用 (*) ,这意味着employee表中的所有字段都将显示在输出中。
在下面的命令中,我们使用OR 和等于 (=)运算符代替IN 运算符。该语句等同于上面的命令:
SELECT *
FROM employee
WHERE emp_fname ='John' OR emp_fname ='Ava'
ORDER BY emp_id DESC;
成功执行上述命令后,我们将得到以下结果:
正如我们在上图中看到的那样,两个输出都提供了相似的结果,但是与OR 和等于 (=) 运算符相比,使用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 和等号 (=)运算符代替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 和等于 (=) 运算符的命令相比,使用IN 运算符的命令更具可读性,而且更短。
换句话说,我们可以说PostgreSQL使用IN 运算符执行命令比使用OR 运算符列表更快。
热门文章
优秀文章