【发布时间】:2019-03-13 06:02:55
【问题描述】:
据我所知,SQL EXISTS 条件与子查询结合使用,如果子查询返回至少一行,则认为满足条件。
那为什么这些代码会给出不同的结果呢?
/* #1 */
SELECT * FROM employees
WHERE EXISTS(
SELECT * FROM employees
WHERE employees.department_id= 20);
/* #2 */
SELECT * FROM employees
WHERE EXISTS(
SELECT * FROM departments
WHERE employees.department_id= 20);
我想如果任何子查询返回任何他们评估为 TRUE 的行。因此,外部查询将返回员工表中的所有行。
但是,只有 #1 代码会返回员工表中的所有行。 #2 返回具有 department_id=20 的 ros。
【问题讨论】:
-
你到底想在这里做什么?这些陈述对我来说都没有意义。