SQL sever 自连接

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重复且值小的筛选出来。

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