Sql 关键词

Sql 关键词,sql,exists,Sql,Exists,如果EXISTS关键字的计算结果仅为True或False,为什么下面的查询会返回具有匹配id的所有指定列,而不是所有指定列 SELECT first_name, last_name FROM employees WHERE EXISTS ( SELECT id FROM retirees WHERE id = employees.id); 因为如果是这种情况,则查询不应计算为: SELECT first_name, last_name FRO

如果EXISTS关键字的计算结果仅为True或False,为什么下面的查询会返回具有匹配id的所有指定列,而不是所有指定列

SELECT first_name,
       last_name
FROM employees
WHERE EXISTS (
    SELECT id
    FROM retirees
    WHERE id = employees.id);
因为如果是这种情况,则查询不应计算为:

SELECT first_name,
       last_name
FROM employees
WHERE EXISTS (
    TRUE);

第一个代码将从employees中选择id为Retires的所有行。过滤器会自动关闭

如果您想查看哪些记录不在退休人员表中,您应该添加
not

就像这样:

SELECT first_name,
       last_name
FROM employees
WHERE NOT EXISTS (
    SELECT id
    FROM retirees
    WHERE id = employees.id);

第一个代码将从employees中选择id为Retires的所有行。过滤器会自动关闭

如果您想查看哪些记录不在退休人员表中,您应该添加
not

就像这样:

SELECT first_name,
       last_name
FROM employees
WHERE NOT EXISTS (
    SELECT id
    FROM retirees
    WHERE id = employees.id);

您使用
的方式存在于
相关子查询中。exists的功能不会结束,而是可以追溯到每次运行时,所有员工id都与retires表匹配。因此,您将获得o/p作为与退休人员匹配的所有员工ID

您使用
的方式存在于
相关子查询中。exists的功能不会结束,而是可以追溯到每次运行时,所有员工id都与retires表匹配。因此,您将获得o/p作为与退休人员匹配的所有员工ID

EXISTS
并不像第二个示例中那样简单地返回
TRUE
。它将返回的
员工
限制为id与
退休人员
条目匹配的员工。换句话说,它返回所有
员工
,其中
退休人员
中存在匹配条目。这与
中的TRUE不同

尽管
EXISTS
具有布尔属性,但本例中对TRUE或FALSE的求值确定是否应在结果中包含
employees
条目。
WHERE TRUE
表单将导致employees表的所有行返回,这肯定不是
EXISTS
所做的,您可能从查询结果中看到了这一点


根据
EXISTS
条件,您可以将
EXISTS
视为一个匹配原始数据集子集的子句。

EXISTS
并不像第二个示例中那样简单地返回
TRUE
。它将返回的
员工
限制为id与
退休人员
条目匹配的员工。换句话说,它返回所有
员工
,其中
退休人员
中存在匹配条目。这与
中的TRUE不同

尽管
EXISTS
具有布尔属性,但本例中对TRUE或FALSE的求值确定是否应在结果中包含
employees
条目。
WHERE TRUE
表单将导致employees表的所有行返回,这肯定不是
EXISTS
所做的,您可能从查询结果中看到了这一点


根据
EXISTS
条件,您可以将
EXISTS
视为一个匹配原始数据集子集的子句。

退休人员是否有
id
列?如果没有,您就犯了一个典型的错误(因为当子查询不合格时,它可以从外部查询愉快地引用
id
)。如果这不是问题所在,您可能需要用示例数据、预期结果等进一步解释
EXISTS
并不像第二个示例中那样简单地返回
TRUE
。它将返回的员工限制为id与退休人员条目匹配的员工。换句话说,它返回所有
员工
,其中
退休人员
中存在匹配条目。这与
中的TRUE不同
谢谢h0r53。它的声明式风格有时让我感到困惑。
退休人员是否有
id
列?如果没有,您就犯了一个典型的错误(因为当子查询不合格时,它可以从外部查询愉快地引用
id
)。如果这不是问题所在,您可能需要用示例数据、预期结果等进一步解释
EXISTS
并不像第二个示例中那样简单地返回
TRUE
。它将返回的员工限制为id与退休人员条目匹配的员工。换句话说,它返回所有
员工
,其中
退休人员
中存在匹配条目。这与
中的TRUE不同
谢谢h0r53。它的陈述式风格有时让我感到困惑。