如何获取重复行
How can I fetch duplicate rows
假设我有一个 table 比如:
ID
valA
valB
valC
1
21
aaaaa
NYC
4
12
bbbbb
NYC
2
31
ddddd
LA
2
23
eeeee
LA
2
41
fffff
NE
3
23
ggggg
JE
3
44
hhhhh
KA
我想要所有包含 valC 副本的行。
所以,结果我想要这个:
ID
valA
valB
valC
1
21
aaaaa
NYC
4
12
bbbbb
NYC
2
31
ddddd
LA
2
23
eeeee
LA
我试过这样的事情:
SELECT DISTINCT *, count(valC)
FROM table A
INNER JOIN table B ON A.valC = B.valC
WHERE A.valC = B.valC AND valC > 1;
我是 SQL 的新手,所以如果有任何建议,我将不胜感激。
一种简单的使用方法Subquery
此示例适用于 MySQL
SELECT *
FROM table_name
WHERE valC IN ( SELECT valC
FROM table_name
GROUP BY valC
HAVING COUNT(valC) > 1);
假设我有一个 table 比如:
ID | valA | valB | valC |
---|---|---|---|
1 | 21 | aaaaa | NYC |
4 | 12 | bbbbb | NYC |
2 | 31 | ddddd | LA |
2 | 23 | eeeee | LA |
2 | 41 | fffff | NE |
3 | 23 | ggggg | JE |
3 | 44 | hhhhh | KA |
我想要所有包含 valC 副本的行。 所以,结果我想要这个:
ID | valA | valB | valC |
---|---|---|---|
1 | 21 | aaaaa | NYC |
4 | 12 | bbbbb | NYC |
2 | 31 | ddddd | LA |
2 | 23 | eeeee | LA |
我试过这样的事情:
SELECT DISTINCT *, count(valC)
FROM table A
INNER JOIN table B ON A.valC = B.valC
WHERE A.valC = B.valC AND valC > 1;
我是 SQL 的新手,所以如果有任何建议,我将不胜感激。
一种简单的使用方法Subquery
此示例适用于 MySQL
SELECT *
FROM table_name
WHERE valC IN ( SELECT valC
FROM table_name
GROUP BY valC
HAVING COUNT(valC) > 1);