[英]How to select non “unique” rows
我有下表,我必須從中獲取非唯一行
+------+------+------+
| id | idA |infos |
+----- +------+------+
| 0 | 201 | 1899 |
| 1 | 205 | 1955 |
| 2 | 207 | 1955 |
| 3 | 201 | 1959 |
+------+------+------+
我想獲取列infos
所有行,它們在至少兩行中具有相同的idA
值。
必須輸出上表的查詢
infos
1899
1959
我嘗試了以下請求但沒有成功:
SELECT idA FROM XXX WHERE NOT EXISTS(SELECT * FROM XXX GROUP BY idA)
SELECT * FROM XXX a WHERE NOT EXISTS(SELECT * FROM XXX b WHERE a.RVT_ID=b.RVT_ID GROUP BY idA)
嘗試這個:
SELECT T1.idA, T1.infos
FROM XXX T1
JOIN
(
SELECT idA
FROM XXX
GROUP BY idA
HAVING COUNT(*) >= 2
) T2
ON T1.idA = T2.idA
您發布的數據的結果:
idaA infos 201 1899 201 1959
這樣的事情應該有效:
SELECT idA, COUNT(*) FROM XXX GROUP BY idA HAVING COUNT(*) > 1
SELECT id, idA, COUNT(infos) AS cnt
FROM mytable
GROUP BY infos
HAVING cnt > 1
這可能是你正在尋找的:
SELECT *, COUNT(DISTINCT infos) FROM table GROUP BY idA HAVING COUNT(DISTINCT infos) > 1;
這應該給出“infos”只出現一次的所有行(在MySQL上測試)
SELECT id, idA, count(infos) AS cnt
FROM mytable
GROUP BY infos
HAVING cnt=1
數據
id ida infos
1 201 1955
2 202 1978
3 203 1978
4 204 1956
5 0 1980
結果
id idA cnt
1 201 1
4 204 1
5 0 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.