Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL删除所有不相等的记录_Sql_Sql Server_Tsql_Sql Server 2014_Sql Delete - Fatal编程技术网

MS SQL删除所有不相等的记录

MS SQL删除所有不相等的记录,sql,sql-server,tsql,sql-server-2014,sql-delete,Sql,Sql Server,Tsql,Sql Server 2014,Sql Delete,我的问题是: 我有两个表(例如T1和T2),它们都有字段Q\u ID。表T1在Q\u ID列dot-machT2中有一些记录。我的目标是用关系连接它们,所以我想删除T2中的所有行,其中Q\u ID不会从T1中删除Q\u ID。我尝试过像这样使用内部连接,但这个脚本只是删除了所有记录 DELETE dst FROM HRM_MVC_DEV_Test.dbo.ProjectWorkers as dst INNER JOIN HRM_MVC_DEV_Test.dbo.Project

我的问题是: 我有两个表(例如
T1
T2
),它们都有字段
Q\u ID
。表
T1
Q\u ID
列dot-mach
T2
中有一些记录。我的目标是用关系连接它们,所以我想删除
T2
中的所有行,其中
Q\u ID
不会从
T1
中删除
Q\u ID
。我尝试过像这样使用内部连接,但这个脚本只是删除了所有记录

    DELETE dst FROM HRM_MVC_DEV_Test.dbo.ProjectWorkers as dst 
    INNER JOIN HRM_MVC_DEV_Test.dbo.Project as src on dst.ProjectId<>src.ProjectId
将dst作为dst从HRM_MVC_DEV_Test.dbo.ProjectWorkers中删除
内部连接HRM_MVC_DEV_Test.dbo.Project作为dst.projectDSRC.ProjectId上的src

我正在使用MS SQL server 2014

可能是这样的:

CREATE TABLE T1 (ID INT, SomeValue VARCHAR(100));
CREATE TABLE T2 (ID INT, SomeValue VARCHAR(100));
INSERT INTO T1 VALUES
(1,'Row 1'),(2,'Row 2'),(3,'Row 3'),(4,'Row 4');
INSERT INTO T2 VALUES
(1,'Row 1'),(4,'Row 4');

DELETE FROM T1
WHERE T1.ID NOT IN(SELECT T2.ID FROM T2);

SELECT * FROM T1;
SELECT * FROM T2;

也许是这样的:

CREATE TABLE T1 (ID INT, SomeValue VARCHAR(100));
CREATE TABLE T2 (ID INT, SomeValue VARCHAR(100));
INSERT INTO T1 VALUES
(1,'Row 1'),(2,'Row 2'),(3,'Row 3'),(4,'Row 4');
INSERT INTO T2 VALUES
(1,'Row 1'),(4,'Row 4');

DELETE FROM T1
WHERE T1.ID NOT IN(SELECT T2.ID FROM T2);

SELECT * FROM T1;
SELECT * FROM T2;

您也可以通过以下两种方式进行:

DELETE dst 
FROM HRM_MVC_DEV_Test.dbo.ProjectWorkers AS dst 
LEFT JOIN HRM_MVC_DEV_Test.dbo.Project AS src ON src.ProjectId = dst.ProjectId
WHERE src.ProjectId IS NULL
--第二


您也可以通过以下两种方式进行:

DELETE dst 
FROM HRM_MVC_DEV_Test.dbo.ProjectWorkers AS dst 
LEFT JOIN HRM_MVC_DEV_Test.dbo.Project AS src ON src.ProjectId = dst.ProjectId
WHERE src.ProjectId IS NULL
--第二

你可以用一个不同于上面的方法。从:

不存在与存在相反。如果子查询未返回任何行,则满足NOT EXISTS中的WHERE子句

你可以用一个不同于上面的方法。从:

不存在与存在相反。如果子查询未返回任何行,则满足NOT EXISTS中的WHERE子句


顺便说一句,有人能解释一下,为什么我的问题中的一些第一个单词消失了(这个问题也在我之前的问题中)-从一开始就消失了“嗨,伙计们”,因为这会给问题增加噪音。问题中不需要正式的介绍、感谢、问候等,只会增加噪音。社区通常会对问题进行编辑,以使其更加清晰或用于格式化等,遇到这些问题时也会考虑并删除。请不要冒犯它,这只是论坛的设计方式和社区成员喜欢如何互动。顺便说一句,有人能解释一下,为什么我问题中的一些第一个词消失了(这个问题也在我之前的问题中)-从一开始就消失了“嗨,伙计们。”文本。因为这会增加问题的噪音。问题中不需要正式的介绍、感谢、问候等,只会增加噪音。社区通常会对问题进行编辑,以使其更加清晰或用于格式化等,遇到这些问题时也会考虑并删除。请不要冒犯它,这只是论坛的设计方式以及社区成员喜欢的互动方式。您可能希望使用not exists,t2中的null将导致意外结果您可能希望使用not exists,t2中的null将导致意外结果