|
由于设计需要,需要查询不重复的记录值。
方案一:distinct
select distinct name from table
可行,再试试......
select distinct name,id from table
测试没什么效果,查下得知,这样实际是要name和id字段都重复才被筛选。继续查找可得如下方法:
方案二:group by
select *, count(distinct name) from table group by name
Oracle下测试失败,据说MYSQL下通过,不管,继续思考....
再试试......
select min(fid),name,sex from table group by name
成功!
继续思考,如果要打开所有记录,不指定字段用(*),貌似这方法就不行了!
select * from table where fid in(Select min(fid) FROM table group by name)
测试成功
方案三:
本来已经完了,突然想起前几天在网上查了查询数据中所有某字段不重复的记录
select * from table where name in(select name from table group by name having count(name)=2)
可行
以此类推:
select * from table where name in(select name from table group by name having count(name)=1)
按道理说没问题,大家试试~~
再多的字段都全部现实。哎,原来如此简单!回顾网上方法distinct,Inner Join等等,麻烦,而且有很大局限性.
总结如下:
select distinct name from table打开不重复记录的单个字段
select * from table where fid in(Select min(fid) FROM table group by name)打开不重复记录的所有字段值
select * from table where name in(select name from table group by name having count(name)=1)打开不重复任意次数的所有记录
作者:林剑坤
日期:2011-5-14 11:18:14
|
|