SQL查询多条不重复记录值

来源:互联网 发布:广东cnc数控编程培训 编辑:程序博客网 时间:2024/05/21 09:29

 由于设计需要,需要查询不重复的记录值。例如有如下表结构和值
table
fid   name sex
1     a      男
2     b      男
3     c      女
4     d      女
5     a      男
6     b      男


方案一:distinct
select distinct name from table
得到结果:
name
a
b
c
d

那如果要同时name和sex字段都重复才被筛选,则使用以下语句:

select distinct name, sex from table

 

方案二:group by

select min(fid),name,sex from table group by name
得到结果:
fid   name sex
1     a      男
2     b      男
3     c      女
4     d      女

如果要打开所有记录,不指定字段用(*),使用如下语句:

select * from table where fid in(Select min(fid) FROM table group by name)
得到结果:

fid   name sex
1     a      男
2     b      男
3     c      女
4     d      女


方案三:
查询数据中所有某字段重复的记录
select   *   from   table   where   name in(select   name   from   table   group   by   name     having   count(name)=2) 
得到如下结果:
fid   name sex
1     a      男
2     b      男
5     a      男
6     b      男
以此类推:
select   *   from   table   where   name in(select   name   from   table   group   by   name     having   count(name)=1)