如何赛筛选出多列内容相同的数据??

MSSQL重复记录查询
本文介绍了一种在MSSQL中查询具有相同ID、名称和描述但数量不同的记录的方法。通过使用子查询来计数匹配项并确保其大于1,从而找出重复的数据行。

在MSSQL里,如何筛选出多个列的内容相同的数据,如:
ID    Name    Desc.    Unit    QTY

001   ABC     15*20    PCS     15
001   ABC     15*20    PCS     16
001   ABC     15*30    PCS     10
002   DEE     21/25    PCS     110
002   DEE     21/25    PCS     10
002   DEE     18/25    PCS     110

要把 ID,Name, Desc. 内容都相同的数据选择出来。语句要怎么写?

create table t1
(
ID  varchar(10),
Name   varchar(10),
[Desc.]   varchar(10),
Unit    varchar(10),
QTY   int
)

insert into t1 select '001',   'ABC',     '15*20',    'PCS',     15
union all select '001',   'ABC',     '15*20',    'PCS',     16
union all select '001',   'ABC',     '15*30',    'PCS',     10
union all select '002',   'DEE',     '21/25',    'PCS',     110
union all select '002',   'DEE',     '21/25',    'PCS',     10
union all select '002',   'DEE',     '18/25',    'PCS',     110

查询:

select * from t1 as a where (select count(1) from t1 where [id]=a.[id] and [name]=a.[name]
 and [Desc.]=a.[Desc.])>1

结果:
select  ID,Name, [Desc.]
from a
group by  ID,Name, [Desc.]
having count(Unit)>1

ID         Name       Desc.     
---------- ---------- ----------
001        ABC        15*20
002        DEE        21/25

(所影响的行数为 2 行)

转载于:https://www.cnblogs.com/martian6125/archive/2009/07/23/9631280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值