7

このような質問がいくつかあるようですが、まったく同じものはないので、次のようになります。

元のテーブルの 2 つのフィールドに等しい 2 つのフィールドを持つ別のテーブルの行があるテーブルの行を削除する方法を見つける必要があります。(次の例では、次のようになります。@All.Stall = @Grouped.Stall および @All.Fruit = @Grouped.Fruit を持つ @All の行を削除する方法を見つける必要があります)

例えば:

@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

以下を含む 2 つの行に注意してください。リンゴはなくなりました。

私の人生では、これを行う方法を理解することはできず、リンゴを含む3行すべてを削除し、ジョン | 1行を残さないようにすることしかできません。リンゴ

2 つの一時テーブルを作成するためのクエリを次に示します。

@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 に答える