gpt4 book ai didi

mysql - SQL:过滤掉列值多次出现的行

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

我有一个如下所示的 MySQL 表:

id    |    label
----------------
1 "john"
1 "henry"
1 "sara"
2 "henry"
3 "tim"

因此,给定的id可以有多个标签。我只想保留 id 具有单个 label 的行。因此上表的正确输出是:

id    |    label
----------------
2 "henry"
3 "tim"

我想我应该按 id 分组并查找每个 id 的标签数量。然后我只取计数为 1 的行。

WITH temp as
(SELECT id
FROM original_table
GROUP BY id
HAVING COUNT(id) > 5)

SELECT *
FROM original_table ot
WHERE ot.id in temp.id

看起来很接近吗?

谢谢!

最佳答案

您可以仅使用联接来仅包含在子查询中出现一次的 ID:

SELECT  id,
label
FROM original_table ot
INNER JOIN (
SELECT id
FROM original_table
GROUP BY id
HAVING COUNT(*) = 1
) a ON a.id = ot.id;

或者您可以使用 IN 子句:

SELECT  id,
label
FROM original_table
WHERE id IN (SELECT id
FROM original_table
GROUP BY id
HAVING COUNT(*) = 1
);

关于mysql - SQL:过滤掉列值多次出现的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54064845/

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