SQL 筛选数据(去重)

本文通过创建临时表#A和#B并插入数据,展示了如何使用SQL进行数据去重筛选。首先,通过INNER JOIN连接两个表,然后利用ROW_NUMBER()函数配合PARTITION BY与ORDER BY对每个组进行编号,最后只选择每个组的第一条记录,从而达到去重的效果。查询结果中包含了去重后的aid, a_name, bid, b_name和组合后的aids信息。" 113109292,8313598,3DMAX基础建模教程:新手入门指南,"['3d建模', '游戏建模', '3DMAX教程', '初学者指南', '建模基础']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--创建(临时)表
create table #A(
id int,
a_name varchar(50)
);
create table #B(
id int,
a_id varchar(50),
b_name varchar(50)
);
--插入数据
insert into #A values(1,'张某某');
insert into #A values(2,'李某');
insert into #A values(3,'刘某');
insert into #A values(4,'赵某某');
insert into #A values(5,'王某某');
insert into #A values(6,'齐某某');

insert into #B values(1,'1,3','客服');
insert into #B values(2,'2,3','经理');
insert into #B values(3,'4,5,6','销售');

--查询(其中group_idx是重复字段所在的序号(row_number()函数)),选取第一条
select *
from (
select #A.id as aid,a_name,#B.id as bid,b_name,a_id as aids,
row_number() over (partition by b_name order by a_name) as group_idx,
stuff((select ',' + a_name from #A where (CHARINDEX(CAST(#A.id as varchar),#B.a_id,0)>0) for xml path('')), 1, 1, '')as p
 from #A,#B
where CHARINDEX(CAST(#A.id as varchar),#B.a_id,0)>0
) as C 
where group_idx=1

--记得删除
--drop table #A;
--drop table #B;

--ps:可以设置其他筛选条件
--ps:新人,有什么不对的地方请指出.谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值