代码之家  ›  专栏  ›  技术社区  ›  Martin

仅选择mysql中的唯一行

  •  2
  • Martin  · 技术社区  · 15 年前

    我只想根据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);
    

    这是最快的方法吗?

    谢谢!

    3 回复  |  直到 15 年前
        1
  •  11
  •   Hawk Kroeger    15 年前

    这是怎么回事

    SELECT T.id,T.name,T.userid 
    FROM tbltest T 
    GROUP BY T.userid
    HAVING COUNT(T.userid) = 1;
    
        2
  •  3
  •   Mark Fox    9 年前

    试试这个:

    SELECT T.id, T.name, T.userid, count(*) AS count FROM tbltest GROUP BY T.userid HAVING count = 1;
    
        3
  •  1
  •   Greg    15 年前

    我不认为这是最快的方法。。。你可以试试:

    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)