如何只选择唯一记录

时间:2014-10-28 01:08:56

标签: mysql sql

我的意思是留下任何重复的记录

例如

ID  NAME
1   a
2   a
3   b
4   b
5   c

期望的输出。

仅限5 c

我厌倦了尝试这个。所以我认为我没有任何合理的代码粘贴在这里。

5 个答案:

答案 0 :(得分:1)

这是一种方式:

select t.*
from table t
where not exists (select 1
                  from table t2
                  where t2.name = t.name and t2.id <> t.id
                 );

这是另一种方式:

select t.*
from table t join
     (select name, count(*) as cnt
      from table t
      group by name
      having cnt = 1
     ) tt
     on tt.name = t.name;

答案 1 :(得分:1)

这是另一种可能的方式:

select min(id), name from table group by name having count(*) = 1

答案 2 :(得分:0)

我认为最简单的方法是选择每行的名称和ID,按名称分组,并仅对COUNT(*)为1的值进行过滤。这意味着任何具有名称的行排除不是唯一的。

看起来像这样:

SELECT id, name
FROM myTable
GROUP BY name
HAVING COUNT(*) = 1;

我无法让SQL工作,但在MySQL工作台中验证了这一点:

enter image description here

答案 3 :(得分:0)

这是另一种方法:

SELECT * FROM table AS A 
   WHERE (SELECT COUNT(*) FROM table AS T 
            WHERE T.NAME = A.NAME) = 1

答案 4 :(得分:-1)

select a.* 
from table a
left join table b on a.name = b.name and a.id <> b.id
where b.id is null;