7

似乎有几个这样的问题,但没有一个完全相同,所以这里是:

我需要找到一种方法来删除一个表中的一行,其中另一个表中的一行有两个字段等于原始表中的两个字段。(在以下示例中,这将显示为:我需要找到一种方法来删除 @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 | 苹果没了。

对于我的生活,我无法弄清楚如何做到这一点,只能让它删除所有包含 Apples 的三行而不留下一个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')
4

2 回答 2

13
DELETE  a
FROM    table1 a
        INNER JOIN table2 b
            ON  a.Stall = b.Stall AND
                a.Fruit = b.Fruit
于 2013-01-18T06:07:37.267 回答
0

试试这个

DELETE FROM @All WHERE Stall="Mary" AND Fruit="apples";
于 2013-01-18T06:17:42.710 回答