gpt4 book ai didi

mysql 选择一个联合,其中一个中的值不会出现在另一个中

转载 作者:行者123 更新时间:2023-11-29 06:05:52 24 4
gpt4 key购买 nike

抱歉,帖子标题不好。

假设我有下表:

C1 | C2       | c3
1 | foo | x
2 | bar | y
2 | blaz | z
3 | something| y
3 | hello | z
3 | doctor | x
4 | name | y
5 | continue | x
5 | yesterday| z
6 | tomorrow | y

我正在尝试使用执行以下联合的 sql 语句:第一次检索检索所有带有 c3 = 'y' 的记录

第二次检索检索记录的第一个实例,其中 c3 <> 'y' 并且结果不在前一个联合中

所以,对于结果,我应该看到:

C1 | C2   
1 | foo
2 | bar
3 | something
4 | name
5 | continue
6 | tomorrow

所以有两个问题:1:我是否完全吸食可卡因,我认为我可以做到这一点,2:(假设我可以),我该怎么做?

最佳答案

试试这个:

SELECT   a.C1, a.C2
FROM MyTable a
WHERE a.C3 = 'y'
UNION
SELECT b.C1, b.C2
FROM MyTable b
WHERE b.C3 <> 'y' AND
b.C1 not in
(
SELECT c.C1
FROM MyTable c
WHERE c.C3 = 'y'
)

更新 1

顺便问一下,为什么你想要的结果只有5一条记录?事实上,可能有两个

SEE FOR DEMO 1

SELECT g.C1, MIN(g.C2) C2
FROM
(SELECT a.C1, a.C2
FROM MyTable a
WHERE a.C3 = 'y'
UNION
SELECT b.C1, b.C2
FROM MyTable b
WHERE b.C3 <> 'y' AND
b.C1 not in
(
SELECT c.C1
FROM MyTable c
WHERE c.C3 = 'y'
)
) g
GROUP BY g.C1

SEE FOR DEMO 2 (yields same result with your desired result)

关于mysql 选择一个联合,其中一个中的值不会出现在另一个中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532726/

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