簡體   English   中英

如何選擇非“唯一”行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM