2009-03-11 7 views
2

Ich möchte nur Zeilen auswählen, die gemäß der Spalte userid aus einer mysql-Tabelle eindeutig sind. Also, wenn ich zwei Zeilen mit der gleichen Benutzer-ID habe, wird keine von ihnen ausgewählt, aber wenn sie nur eine ist, wird sie ausgewählt.Wählen Sie nur eindeutige Zeilen in mysql aus

Ich verwende den folgenden Code ein:

SELECT T.id,T.name,T.userid FROM tbltest T WHERE userid NOT IN (SELECT userid FROM tbltest WHERE tbltest.id<>T.id); 

Ist dies der schnellste Weg, es zu tun?

Danke!

Antwort

11

Wie ist das

SELECT T.id,T.name,T.userid 
FROM tbltest T 
GROUP BY T.userid 
HAVING COUNT(T.userid) = 1; 
+0

Errr sicherlich brauchen Sie nicht das NICHT IN? – Greg

+0

Wahrscheinlich nicht, aber alles, was ich getan habe, war die GROUP BY und HAVING zu der von ihm geposteten Aussage hinzuzufügen. –

+0

Ich glaube nicht, dass das funktionieren wird. Kein MySQL-Benutzer, aber muss GROUP BY nicht alle Spalten auflisten, die nicht aggregiert sind? Die meisten RDBMS tun ... –

3

Try this:

SELECT T.id, T.name, T.userid, count(*) AS count FROM tbltest GROUP BY T.userid HAVING count = 1; 
1

Ich glaube nicht, das ist der schnellste Weg, ... Sie könnten versuchen:

SELECT T.id, T.name, T.userid, COUNT(*) AS num 
FROM tbltest T GROUP BY T.userid HAVING num = 1 

Oder

SELECT T.id, T.name, T.userid, COUNT(*) AS num FROM tbltest T 
WHERE NOT EXISTS 
(SELECT 1 FROM tbltest T2 WHERE T2.userid = T.userid AND T2.id != T.id)