加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 根据此表和另一个表中的行值删除一个表中的行

发布时间:2020-12-12 07:04:15 所属栏目:MsSql教程 来源:网络整理
导读:似乎有这样的一些问题,但没有一个完全相同,所以这里是: 我需要找到一种方法来删除一个表中的行,其中另一个表中有一行,其中两个字段等于原始表中的两个字段. (在以下示例中,将显示: 我需要找到一种方法来删除@All中包含@ All.Stall = @ Grouped.Stall和@ All
似乎有这样的一些问题,但没有一个完全相同,所以这里是:

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

> SQLFiddle Demo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读