Выберите только уникальные строки в MySQL - PullRequest
2 голосов
/ 12 марта 2009

Я хочу выбрать только строки, которые являются уникальными в соответствии с идентификатором пользователя столбца из таблицы MySQL. Поэтому, если у меня есть две строки с одинаковым ИД пользователя, ни одна из них не будет выделена, но если выбрана только одна, то она будет выбрана.

Я использую следующий код:

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

Это самый быстрый способ сделать это?

Спасибо!

Ответы [ 3 ]

11 голосов
/ 12 марта 2009

Как это

SELECT T.id,T.name,T.userid 
FROM tbltest T 
GROUP BY T.userid
HAVING COUNT(T.userid) = 1;
3 голосов
/ 12 марта 2009

Попробуйте это:

SELECT T.id, T.name, T.userid, count(*) AS count FROM tbltest GROUP BY T.userid HAVING count = 1;
1 голос
/ 12 марта 2009

Не думаю, что это самый быстрый способ ... вы можете попробовать:

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

Или

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)
...