我想根据mysql表中的列userid只选择唯一的行。因此,如果我有两个具有相同用户ID的行,则它们中没有一个被选中,但如果它只有一个被选中。
我使用以下代码:
SELECT T.id,T.name,T.userid FROM tbltest T WHERE userid NOT IN (SELECT userid FROM tbltest WHERE tbltest.id<>T.id);
这是最快的方法吗?
谢谢!
答案 0 :(得分:11)
这是怎么回事?
SELECT T.id,T.name,T.userid
FROM tbltest T
GROUP BY T.userid
HAVING COUNT(T.userid) = 1;
答案 1 :(得分:3)
试试这个:
SELECT T.id, T.name, T.userid, count(*) AS count FROM tbltest GROUP BY T.userid HAVING count = 1;
答案 2 :(得分:1)
我认为这不是最快的方式......你可以尝试:
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)