gpt4 book ai didi

sql - 我必须在 WHERE EXIST 子句中选择什么?

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

WHERE EXIST 子句的子查询中,我必须 SELECT 做什么?

这是一个带有 WHERE EXIST 子句的随机查询:

SELECT a.*
FROM a
WHERE EXISTS
(SELECT *
FROM b
WHERE b.a_id = a.id)

因此,*b中被选中。但这对我来说毫无意义,因为我不想选择任何东西(除非我误解了 WHERE EXIST 的行为)。我本可以选择 1,但这看起来也很奇怪。

我认为它在执行速度方面并不重要,任何东西都可以工作,但在可读性和“语义”方面可能很重要。 (我不确定我使用的词!)。这有什么最佳实践吗?如果是这样,为什么选择一种方式而不是另一种方式?

最佳答案

没关系。一个好的做法是使用 SELECT 1 来指示它是一个非数据返回子查询。

select 不被评估并且无关紧要。在 SQL Server 中,您可以将 SELECT 1/0 放在存在的子查询中,它甚至不会抛出被零除的错误。

相关:What is easier to read in EXISTS subqueries? https://dba.stackexchange.com/questions/159413/exists-select-1-vs-exists-select-one-or-the-other

对于非信徒:

 DECLARE @table1 TABLE (id INT)
DECLARE @table2 TABLE (id INT)

INSERT INTO @table1
VALUES
(1),
(2),
(3),
(4),
(5)


INSERT INTO @table2
VALUES
(1),
(2),
(3)

SELECT *
FROM @table1 t1
WHERE EXISTS (
SELECT 1/0
FROM @table2 t2
WHERE t1.id = t2.id)

关于sql - 我必须在 WHERE EXIST 子句中选择什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49576680/

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