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