似乎有一些像这样的问题,但没有一个完全相同,所以这里是:
我需要找到一种方法来删除一个表中的行,其中另一个表中有一行,其中两个字段等于原始表中的两个字段。 (在以下示例中,将显示: 我需要找到一种方法来删除@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,Fruit,StallFruitID) VALUES('John','Pears',1)
INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('John','Pineapple',1)
INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('Mary','Apples',1)
INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('Mary','Apples',2)
INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('Mary','Pears',1)
INSERT INTO @All (Stall,Fruit,StallFruitID) VALUES('Mary','Pineapple',1)
INSERT INTO @Grouped (Stall,Fruit) VALUES('Mary','Apples')
答案 0 :(得分:13)
DELETE a
FROM table1 a
INNER JOIN table2 b
ON a.Stall = b.Stall AND
a.Fruit = b.Fruit
答案 1 :(得分:0)
试试这个
DELETE FROM @All WHERE Stall="Mary" AND Fruit="apples";