2011-11-19 72 views
0

我有如下表 - mytableMySQL的選擇唯一行

----id----|----user_id----|----value-----| 
----1-------------1------------- 9 
----2-------------1------------- 8 
----3-------------2 -------------11 
----4-------------2-------------12 
----5-------------3-------------11 
----6-------------4-------------8 
----7-------------1-------------3 

我想SELECT * FROM mytable...其中value有這樣一條記錄:

----id----|----user_id----|----value----- 
----1-------------1-------------9 
----4-------------2-------------12 
----7-------------1-------------3 

注意,值8和值11有重複和我刪除所有

回答

1

試試這個

SELECT * FROM mytable 
GROUP BY `value` 
HAVING count(*) = 1 

SELECT * FROM mytable 
GROUP BY `value` 
HAVING count(*) < 2 
1

你可以嘗試左連接:

SELECT T1.id, T1.user_id, T1.value 
FROM yourtable T1 
LEFT JOIN yourtable T2 
ON T1.value = T2.value 
AND T1.id <> T2.id 
WHERE T2.id IS NULL 
+0

列名是ambiguos:使用'SELECT T1.id,T1.user_id,T1.value') – Marco

+0

@Marco:謝謝,固定。 –

0

下面的查詢應該可以正常工作上面提出的問題..

SELECT * T1從 T1 MYTABLE。 , ( SELECT VALUE FROM MYTABLE GROUP BY VALUE HAVING COUNT(*)= 1 )T2 WHERE T1.VALUE = T2.VALUE;

問候, Venk

0

我這樣做:

select t1.* 
from table1 t1 
where 1 = (select count(t2.id) 
        from table1 t2 
        where t1.value = t2.value 
        ) 

希望工程。

PS:ID必須是唯一的關鍵。

+0

只需修復一些問題。這一次,證明了它,它的工作。 –