gpt4 book ai didi

SQL Server 2008 查询删除在其他 3 个表中找不到值的所有行

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:18 26 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 数据库,其中可以在数据库中使用的所有项目都存储在表 A 中,键值为 ItemNum。表 B 和表 C 使用 ItemNum 作为键值,是实际使用表 A 中的项目的地方。表 A 包含许多在表 B 和表 C 中未使用的重复项。我需要从表 A 中删除表 B 或表 C 中未使用的所有 ItemNum。

现在我有以下两个使用 Select 语句的查询(最终将切换到 Delete 语句),我不确定它们是否正常工作,我想尽可能创建最高效的查询。

    USE Database
GO

SELECT ItemNum
FROM B
WHERE EXISTS
(SELECT ItemNum FROM A WHERE A.ItemNum = B.ItemNum)

USE Database
GO

SELECT ItemNum
FROM C
WHERE EXISTS
(SELECT ItemNum FROM A WHERE A.ItemNum = C.ItemNum)

最佳答案

您可以使用简单的 DELETE JOIN;

DELETE A FROM A 
LEFT JOIN B ON A.itemnum = B.itemnum
LEFT JOIN C ON A.itemnum = C.itemnum
WHERE b.itemnum IS NULL
AND c.itemnum IS NULL;

An SQLfiddle to test with .

关于SQL Server 2008 查询删除在其他 3 个表中找不到值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23594397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com