码迷,mamicode.com
首页 > 数据库 > 详细

SQL sever 自连接

时间:2021-01-15 11:55:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:苹果   ack   tab   seve   rgb   ever   相等   idt   最大   

1、商品表F,记好ID

ID  SG (名称) JG(价格)
1 苹果  55
2 梨子  65
3 橘子  75
4 苹果  55
5 苹果  55

 

 

 

 

 

 

 

 

 

通过自连接删除(名称价格)重复的行,只留一个

1 DELETE FROM F F1 
2 WHERE ID <
3 (
4 SELECT MAX(F2.ID) 
5 FROM F F2 
6 WHERE F1.SG=F2.SG AND F1.SL=F2.SL
7 )

先筛选名称价格相等得到符合条件,然后取出最大的一条,然后通过大小判断,因为梨子、橘子只有一条2<2不成立,

所以筛选出ID小于最大ID5的两个重复苹果

1 DELETE FROM F F1 WHERE  EXISTS(SELECT* FROM  F F2 WHERE F1.SG=F2.SG AND F1.SL=F2.SL AND F1.ID<F2.ID)

这个通过EXISTS将条件为True的返回,要把这两个表当成两个单独的集合,名称价格相等,然后将ID值小的筛选出来,最大的一个留下。

只有一条数据的是不可能小于自己的,但有多条数据的,嘿嘿。

 

SQL sever 自连接

标签:苹果   ack   tab   seve   rgb   ever   相等   idt   最大   

原文地址:https://www.cnblogs.com/BKY88888888/p/14278318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!