从同一查询中的两个表中删除 NULL 行[重复]

Posted

技术标签:

【中文标题】从同一查询中的两个表中删除 NULL 行[重复]【英文标题】:Deleting NULL rows from two tables in the same query [duplicate] 【发布时间】:2017-11-07 14:44:06 【问题描述】:

您好,我正在处理一个非常简单的查询,这个查询假设删除我表上的所有空行,我知道这是我的查询

DELETE FROM myTable WHERE myID IS NULL;

但是我想在存储过程中包含这个查询,这次我想在一个查询中从两个表中删除所有空值,这是我的进步:

DELETE tblOg.myID, TblOrd.myID
FROM myTbl tblOg,
      myTblOrdered TblOrd
WHERE myTbl.myID IS NULL AND myTblOrdered.myID IS NULL;

但我得到了这个错误

消息 102,级别 15,状态 1,第 7 行 'TblOrd' 附近的语法不正确。

不确定我是否应该使用INNER JOIN 或者我应该把它放在哪里。

提前致谢。

【问题讨论】:

你用的是什么关系型数据库? 使用DELETE语句只能从一张表中删除。 @Lamak Microsoft SQL Server DELETE 语句中的 FROM 关键字经常以令人困惑的方式使用。我们可以说DELETE myTable WHERE myID IS NULL (without FROM) 这与您的第一个查询完全相同。然后,您可以在 WHERE 之前添加 FROM 以指定其他表连接,以帮助识别要从第一个表中删除的行。我发现这是一个愚蠢的语言问题,在不需要时允许使用 FROM - IMO 应该只允许在 DELETE 中指定 JOIN,但事实并非如此。 【参考方案1】:

你不能像这样用分号分隔它们吗:

DELETE FROM table1 WHERE myID IS NULL;
DELETE FROM table2 WHERE myID IS NULL;

使用内连接

DELETE FROM table1 INNER JOIN table2 WHERE table1.myID IS NULL AND table2.myID IS NULL.

【讨论】:

您的答案的第二部分将不起作用。您仍然只是从 1 个表中删除,其次您不能加入空值。

以上是关于从同一查询中的两个表中删除 NULL 行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

oracle 数据去重问题,要求去掉表中的重复数据,但得保留重复数据中MD的值最小的那条数据

为 Access 中的 JOIN 中的第二个重复行返回 null

查询删除临时表中的重复行

从 DB2 中的表中删除重复项

删除sql查询中的重复行[重复]

如何从 SQL Server 中的表中删除重复行 [重复]