gpt4 book ai didi

sql - 无交集和其他条件的右连接

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

我想做这样的右连接:

enter image description here

我想要全B,没有A或者所有 B 只是 A.type <> 0(如果它们有一个 A.type = 0,我不想要它们)

现在我有这个:

SELECT B.* 
FROM A
RIGHT JOIN B ON A.ticket = B.id
WHERE A.id IS NULL
AND B.state NOT IN (3,4,10)
AND B.disable = 0

最佳答案

没有理由使用RIGHT JOIN。对于大多数人来说,它比 LEFT JOIN 更令人困惑,原因有两个。首先,FROM 子句是“从左到右”读取的。 LEFT JOIN 保留子句中第一个表中的所有行。最后一个表中尚未出现的RIGHT JOIN。其次,FROM 子句是从左到右解析的,这在组合多个外连接时引入了一些微妙的问题。

接下来,你明确地说:

i want to exclude B who doesn't have a A.Type = 0

这相当于:

i want to include B who have no A.Type = 0

这不完全是外连接。我认为这更接近你想要的:

就您而言:

SELECT  B.*
FROM B
WHERE NOT EXISTS (SELECT 1
FROM A
WHERE A.ticket = B.id AND A.Type = 0
) AND
B.state NOT IN (3, 4, 10) AND B.disable = 0;

关于sql - 无交集和其他条件的右连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553844/

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