怎样显示不重复的记录

我们经常遇到这样的问题:查询数据中的记录,却有很多重复的数据,所以我们要求sql查询,使其不显示重复记录,这让我们不免想到distinct,可distinct只能查询到一个字段,要再显示其他的字段就出现错误信息了,再加其他的条件也是比较复杂的,一个比较简单的写法:

select * from 表名 where 重复的字段名 in(select distinct title from 表名 group by 重复的字段名 having count(重复的字段名)=1)

这样问题就解决了!


以上内容来自:
http://www.cnblogs.com/jian1982/archive/2010/07/06/1772300.htm


这篇文章其实是“半转贴”,因为下边是我自己的经验。

 

在许多重复记录里只显示一条,那么这一条多半与众不同:或者是日期最近,或者是金额最大,等等。

 

下面是我写过的一个查询。第一步将日期大于dd的记录考入一个临时表#temp1:

sql="select * into #temp1 from PriceList where UploadDate>='"

 

+dd

 

第二步把这个生成的临时表自我join,先求出相同SupplierID中最近的那条记录(maxDate)里的两个字段,然后再与原表关联,得出全部字段。

sql="

select a.* into #temp2 from #temp1 a inner join

(select MAX(UploadDate) maxDate, SupplierID from #temp1 group by SupplierID) b

on a.SupplierID=b.SupplierID and a.UploadDate=b.maxDate where a.SupplierID=100 or a.Quantity>10"

 

上面的查询命令就是:列出某日以后的PriceList记录,如果这期间某一供应商给出很多价格,则以最近的为准;供货商的库存少于十个不算(除非SupplierID等于100)。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值