gpt4 book ai didi

mysql - EXISTS 语句中忽略的 SELECT 列表和子查询是什么?

转载 作者:行者123 更新时间:2023-11-29 04:11:53 25 4
gpt4 key购买 nike

这是来自 http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html 的引述: "如果子查询返回任何行,则 EXISTS 子查询为 TRUE,NOT EXISTS 子查询为 FALSE。例如:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

传统上,EXISTS 子查询以 SELECT * 开头,但它可以以 SELECT 5 或 SELECT column1 或任何其他内容开头。 MySQL 会忽略此类子查询中的 SELECT 列表,因此没有任何区别。”

最后两句是什么意思?我可以举例说明为什么这很重要吗?我已经意识到,无论我在最初的 SELECT 中使用什么,我都会得到结果集中的所有列。这是在说什么吗?

最佳答案

这些句子不是关于 SELECT column... 部分,而是 ONLY 关于 ...EXISTS (SELECT *...两句话告诉你下面的语句是等价的:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT 5 FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT 42 FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT random() FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT column FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT NULL FROM t2);
SELECT column1 FROM t1 WHERE EXISTS (SELECT 1/0 FROM t2);

不多也不少。

由于您返回的关系是在第一个 SELECT column1 部分中指定的,因此第二个 SELECT 对返回的行没有影响。

关于mysql - EXISTS 语句中忽略的 SELECT 列表和子查询是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com