似乎有这样的一些问题,但没有一个完全相同,所以这里是:
我需要找到一种方法来删除一个表中的行,其中另一个表中有一行,其中两个字段等于原始表中的两个字段. (在以下示例中,将显示:
我需要找到一种方法来删除@All中包含@ All.Stall = @ Grouped.Stall和@ All.Fruit = @ Grouped.Fruit的行
例如:
@All:要删除行的表:
Stall Fruit ------------------- John Apples John Pears John Pineapple Mary Apples Mary Apples Mary Pears Mary Pineapple
@Grouped:要从中删除行的表:
Stall Fruit ------------------- Mary Apples
结果表应如下所示:
Stall Fruit ------------------- John Apples John Pears John Pineapple Mary Pears Mary Pineapple
请注意,这两行包含:Mary |苹果不见了.
对于我的生活,我无法弄清楚如何做到这一点,并且只能让它删除包含苹果的所有三行而不是留下一个John苹果.
以下是创建两个临时表的查询,如果有人能够提供帮助:
@All – 要删除行的表
@Grouped – 包含要从@All中删除的字段的表
DECLARE @All TABLE( Stall varchar(10),Fruit varchar(10),StallFruitID int ) DECLARE @Grouped TABLE( Stall varchar(10),Fruit varchar(10) ) INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('John','Apples',1) INSERT INTO @All (Stall,'Pears','Pineapple',StallFruitID) VALUES('Mary',2) INSERT INTO @All (Stall,1) INSERT INTO @Grouped (Stall,Fruit) VALUES('Mary','Apples')
解决方法
DELETE a FROM table1 a INNER JOIN table2 b ON a.Stall = b.Stall AND a.Fruit = b.Fruit