2015-04-15 95 views
0

我有一個包含兩組整數值的表。使用MySQL我想顯示與第二列中唯一條目對應的所有行。基本上我可以重複A值,但只有唯一的B值。如果B中的值有重複,則使用該值刪除所有結果。如果我使用DISTINCT,我仍會得到其中一個我不想要的副本。我也想避免使用COUNT()。舉例如下:刪除所有重複的查詢結果(NOT DISTINCT)

|_A____B_| 
| 1 2 | 
| 1 3 | 
| 2 2 | 
| 2 4 | 
| 1 4 | 
| 5 5 | 

將會有以下結果(1,3),(5,5)。 B中具有重複的任何值將被刪除。

+0

Ricca的,檢查我的solution..tested它workds –

回答

0

試試這個

SELECT * FROM TEMP WHERE B IN (
    SELECT B FROM TEMP GROUP BY B Having COUNT(B)=1 
); 

我知道你要避免使用COUNT()但這是快速的解決方案。

工作小提琴這裏 - http://sqlfiddle.com/#!9/29d16/8

0

測試和工程!你需要至少在COUNT(*)計算值

select * from test where B in (
    select B from test group by B having count(*)<2 
) 
0

我不知道爲什麼你要避免使用count(),因爲這是會做的伎倆如下:

比方說,你表被命名爲「mytable的」

SELECT t1.A, t1.B 
FROM mytable t1 
JOIN (
    SELECT B, count(*) AS B_INSTANCES 
    FROM mytable 
    GROUP BY B 
    HAVING count(*) = 1 
) t2 ON t2.B = t1.B 
ORDER BY t1.A, t1.B 
+0

這是一個分配的具體要求。表格中的值也可以在其他表格中找到,並可以通過這些相應的表格查詢,但我希望有一個更簡單的方法。我會繼續嘗試找到一種方法。 – Ricca