所以我有一个数据库表,如:
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
答案 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
从表中选择*不在(先前选择)按名称排序