SQL嵌套查询:子查询返回多行记录时不可用运算符
在进行嵌套查询时,当子查询的结果返回多行记录时,不能使用的运算符是'B 带all、some(any)谓词的比较运算符'。
原因在于,带'all'、'some'(或'any')谓词的比较运算符要求子查询返回单行结果,才能进行比较。当子查询返回多行记录时,无法确定与主查询中的值进行比较的是哪一行,导致结果无法确定。
例如,以下语句是错误的:
SELECT * FROM employees WHERE salary > ALL (SELECT salary FROM managers);
因为子查询 SELECT salary FROM managers 可能返回多行记录,无法确定 salary 与哪个 managers 的 salary 进行比较。
其他选项,如 [not] exists 和 [not] in 则可以用于处理子查询返回多行记录的情况。
原文地址: https://www.cveoy.top/t/topic/nBjc 著作权归作者所有。请勿转载和采集!