mysql - SQL:过滤掉列值出现多次的行
问题描述
我有一个如下所示的 MySQL 表:
id | label
----------------
1 "john"
1 "henry"
1 "sara"
2 "henry"
3 "tim"
所以一个给定的id
可以有多个label
s。我只想保留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
这看起来很接近吗?
谢谢!
解决方案
我认为聚合是最简单的方法:
select id, min(label) as label
from original_table t
group by id
having count(*) = 1;
推荐阅读
- wpf - 如何在 xaml 中使用 grid.row 获得整个窗口的一半?
- python - 如何使用 AccessKey 和 SecretKey 在 AWS 中对 API 网关进行身份验证
- angular-reactive-forms - 在 Angular 8 中,如何在单击提交按钮时将所有值转换为 JSON?
- python - 如何从 url 列表文本文件中下载位于每个 url 上相同位置的图片?
- angular - Angular 自定义验证器为重复代码应用模板
- php - 更新了 Windows 7 上的 MAMP 并在尝试 Laravel 迁移时开始出错 - PDOException::(“找不到驱动程序”)
- r - 快速提取数据框中的 json 字段
- javascript - RNFS.uploadFiles 仅适用于原始上传,不适用于 multipart/form-data
- go - CircleCI vs Bitbucket Go 构建问题
- gremlin - 如何使用 Gremlin npm 包中的 sideEffect() 方法