【问题标题】:Select only unique rows in mysql只选择mysql中的唯一行
【发布时间】:2009-03-11 21:31:14
【问题描述】:

我只想根据 mysql 表中的用户 ID 列选择唯一的行。因此,如果我有两行具有相同的用户 ID,则没有一个会被选中,但如果只有一个会被选中。

我使用以下代码:

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

这是最快的方法吗?

谢谢!

【问题讨论】:

    标签: mysql select unique


    【解决方案1】:

    这是怎么回事

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

    【讨论】:

    • 呃,你确定不需要NOT IN吗?
    • 可能不是,但我所做的只是将 GROUP BY 和 HAVING 添加到他发布的声明中。
    • 我认为这行不通。不是 MySQL 用户,但 GROUP BY 不必列出所有未聚合的列吗?大多数 RDBMS 都...
    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

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

      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)
      

      【讨论】:

        猜你喜欢
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 2016-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多