gpt4 book ai didi

mysql - SQL 查询除外

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:05 25 4
gpt4 key购买 nike

如果我有一个像这样设置的表:

╔══════╦══════╗
║ A ║ B ║
╠══════╬══════╣
║ Sam ║ sec2 ║
║ Sam ║ sec2 ║
║ Sam ║ sec2 ║
║ Fred ║ sec1 ║
║ Fred ║ sec2 ║
║ Fred ║ sec1 ║
║ Joe ║ sec1 ║
║ Joe ║ sec1 ║
╚══════╩══════╝

我想要的结果是

╔═════╦══════╗
║ A ║ B ║
╠═════╬══════╣
║ Sam ║ sec2 ║
║ Sam ║ sec2 ║
║ Sam ║ sec2 ║
║ Joe ║ sec1 ║
║ Joe ║ sec1 ║
╚═════╩══════╝

所以基本上我想查询 sec1 或 sec2 中的人,但不是同时查询两者,我想保留重复项。

我的尝试:

SELECT A, B
FROM TABLE
WHERE (A = 'SAM' OR A = 'FRED' OR A = 'JOE') AND NOT (B = 'sec1' AND B = 'sec2')

最佳答案

好的,如果表上还有其他更多列,此查询很有用。子查询的作用是单独获取 A,它只对 B 具有唯一性。 MAX(B) = MIN(B)COUNT(DISTINCT B) = 1 相同。然后,子查询的结果通过 A 列连接回表本身。

SELECT  y.*
FROM tableName y
INNER JOIN
(
SELECT A
FROM tableName
GROUP BY A
HAVING MAX(B) = MIN(B)
AND MAX(B) IN ('sec1', 'sec2')
) x ON y.A = x.A

SELECT  y.*
FROM tableName y
INNER JOIN
(
SELECT A
FROM tableName
GROUP BY A
HAVING COUNT(DISTINCT B) = 1
AND MAX(B) IN ('sec1', 'sec2')
) x ON y.A = x.A

关于mysql - SQL 查询除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15352564/

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