求一条sql语句(很简单)

来源:百度知道 编辑:UC知道 时间:2024/06/30 23:37:39
name address
A ad1
A ad2
A ad3
B bd1
B bd2
C cd1
D dd1
D dd2
E ed1
F fd1
G gd1
G gd2

如上所示,我想选择出name 和 address 不是一对一的结果,就是过滤掉
C,E,F
应该如何写啊!?

select * from table where name in(select distinct(name) from table group by name having count(*)>1)

select name from 表名
group by name
having count(name)>1
这样只显示name列,address列不显示出来.要是想两列都显示要分两步

select name into #a from 表名
group by name
having count(name)>1

select * from 表名
where name in (select name from #a)

select * from (表的名字)z
where exists (select 1
from (select name, count(*) nn
from (表的名字)zz
group by zz.name)
where nn > 1 and zz.name=z.name)

在存在大量数据时候,用in的效率会很低

select a,ad1
from table1
group by a,ad1
having count(*)>1;

公布一下标准答案:

如果条件是过滤掉CEF,那么
select * from Atable where name not in(C,E,F)--这里过滤多少都行

如果是选择name出现次数大于1的,那么
select * from Atable where name in(select name from Atable group by name having count(*)>1)

select a.