sql server关于查询数据去重

这是bk_bk_pf_credit_card 表的数据 ,以下简称 a表,由于公司数据表内容就不展示了。一共有324条记录


下面这一张微信用户数据表,以下简称b表,这个表里面的数据有点多了,大概29000




需求:根据 a 表 licence_plate 字段进行一个分组,并获取该记录的open_id关联 b 表获取对应的nicakname等其他的字段,乍一看无非就是一个两表联合查询,但是会出现重复的记录,我们的前提是要根据 a 表的 licence_plate  进行分组,用过sql server 的老铁都知道 肯定得不到我们想要的结果, 这也是我用sql server一个比较头疼的地方了,还有一个就是分页。哈哈废话说的有点多了,下面就是我参考大牛的思路写的一个sql ,由于小生第一次写博客可能思路有点混乱。欢迎各位大牛指点。


SELECT
a.*, b.headimgurl,
b.nickname,
c.[count]
FROM
bk_pf_credit_card a
LEFT JOIN BK_Weixin_User AS b ON a.open_id = b.openid
left join (select licence_plate,count(licence_plate) as count from bk_pf_credit_card GROUP BY licence_plate) c ON a.licence_plate =c.licence_plate 
WHERE
NOT EXISTS (
SELECT
1
FROM
bk_pf_credit_card
WHERE
licence_plate = a.licence_plate
AND add_time < a.add_time
)


这是执行的结果,速度我个人感觉还是挺快的,也达到了我预期的结果了,简单的的说下我的思路:1 将需要的分组的字段写入一个临时表中  2 用 NOT EXISTS里的语句去重,在这里面我是按照时间的大小来选择,也可以根据具体的业务需求来筛选,主要就是这两点。这个给我提供思路的大神博客地址--http://blog.csdn.net/liuc0317/article/details/6634683

 欢迎大家的点评  吐舌头吐舌头吐舌头









猜你喜欢

转载自blog.csdn.net/xiao199306/article/details/78842673