sql选择重复和单打

时间:2015-12-28 14:40:48

标签: mysql sql

所以我有一个数据库表,如:

NAME  name_ID
---------------
Joao    1
Maria   3
Joao    1 
carlos  2 
carlos  2

我想做一个选择查询,只显示所有重复项:

NAME  name_ID
---------------
Joao    1
Joao    1 
carlos  2 
carlos  2

和其他显示单身的选择查询:

 NAME  name_ID
  ---------------
    Maria 3

2 个答案:

答案 0 :(得分:1)

如果每个表中都有唯一的id列,这会更简单。我鼓励您使用主键设计表格。

在任何情况下,您都可以通过查询重复表单来执行此操作:

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

对于单身人士,比较为cnt = 1

编辑:

(name, id)上使用唯一ID和索引,对于重复项,以下内容可能更快:

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

单身人士会改用not exists

答案 1 :(得分:0)

从表组中按名称选择名称,使用计数(*)= 1 ### for Maria

从表中选择*不在(先前选择)按名称排序