gpt4 book ai didi

sql - 在 from 子句或 where 子句中进行等值连接哪个更好

转载 作者:行者123 更新时间:2023-12-02 08:59:31 25 4
gpt4 key购买 nike

当在主键列上连接两个简单表并放置加法相等条件时,可以在连接本身或 where 子句中完成。

例如,以下内容是等效的。 我的问题是 - 是否有理由使用一种样式而不是另一种样式?

SELECT * 
FROM A
INNER JOIN B ON A.A_ID = B.A_ID
AND A.DURATION = 3.00

...对比:

SELECT * 
FROM A
INNER JOIN B ON A.A_ID = B.A_ID
WHERE A.DURATION = 3.00

最佳答案

一般来说,它没有语义差异。

但有一种边缘情况它可以做到。如果(已弃用)GROUP BY ALL构造被添加到查询中,如下所示。

DECLARE @A TABLE(A_ID INT, DURATION DECIMAL(3,2) )
INSERT INTO @A VALUES(1,2.00)

DECLARE @B TABLE(A_ID INT)
INSERT INTO @B VALUES(1)

/*Returns one row*/
SELECT *
FROM @A A
INNER JOIN @B B ON A.A_ID = B.A_ID
WHERE A.DURATION = 3.00
GROUP BY ALL A.A_ID, A.DURATION, B.A_ID

/*Returns zero rows*/
SELECT *
FROM @A A
INNER JOIN @B B ON A.A_ID = B.A_ID AND A.DURATION = 3.00
GROUP BY ALL A.A_ID, A.DURATION, B.A_ID

关于sql - 在 from 子句或 where 子句中进行等值连接哪个更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694281/

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