【发布时间】:2020-10-25 13:54:07
【问题描述】:
我有这样的桌子
table1
| ID | Val | Val2 |
| 2 | AA | 0 |
| 3 | AA | 1 |
| 4 | AD | 0 |
| 5 | CV | 1 |
| 6 | AF | 1 |
| 7 | CV | 1 |
我想知道Val 列中是否有多个重复值。我使用了group by 子句。另外我想知道Val中出现了多少重复项
select Val,count(Val) from table
group by Val where
having count(val) > 1
结果:
| Val | count(val) |
| AA | 2 |
| CV | 2 |
现在我想知道哪一列有重复值,所以我使用 Group_concat 进行这样的查询
select Val,count(Val), group_concat(ID) from table1
group by Val where
having count(val) > 1
结果
| Val | count(val) | group_concat(ID) |
| AA | 2 | 2,3 |
| CV | 2 | 5,7 |
现在我不知道如何显示所有重复值,我只通过 group_concat() 显示具有重复值的 id,但如果没有 group_concat 列,我无法显示所有数据。我尝试使用Field_in_set,但它似乎不起作用。
select Val,count(Val), group_concat(ID) from table1
where FIELD_IN_SET(ID,group_concat(ID))
group by Val where
having count(val) > 1
我希望在group by 和count 之后显示所有重复值,如下表所示
| ID | Val | Val2 |
| 2 | AA | 0 |
| 3 | AA | 1 |
| 5 | CV | 1 |
| 7 | CV | 1 |
【问题讨论】: