SQL IF 存在还是 WHERE 存在?

Posted

技术标签:

【中文标题】SQL IF 存在还是 WHERE 存在?【英文标题】:SQL IF Exists or WHERE Exists? 【发布时间】:2013-07-01 11:48:31 【问题描述】:

创建一个 INSERT 查询以将数据从另一个表 (YPTImport) 插入现有表 (YPImport),问题是 YPTImport 中的一些数据已经存储在 YPImport 表中,因此如果我执行标准导入,我将创建重复项在 YPImport 表中。

我可以使用 3 个字段来比较数据以确保没有重复项,即 CNumber、位置和日期。所以如果 CNumber、Location 和 Date 匹配,那么我不想插入行。

我尝试使用 WHERE NOT EXISTS 并在 YPImport 表上使用 INNER JOIN 进行选择以仅选择重复项,但使用 WHERE NOT EXISTS 它返回 0 行。

SELECT item,
       CNumber,
       Location,
       Date,
FROM   YPTImport
WHERE  NOT EXISTS (SELECT a.item,
                          a.CNumber,
                          a.Location,
                          a.Date,
                   FROM   YPTImport a
                          INNER JOIN YPImport b
                            ON a.CNumber = b.CNumber
                               AND a.Location = b.Location
                               AND a.Date = b.Date) 

有什么建议吗?

【问题讨论】:

【参考方案1】:

使用这个查询:

SELECT
a.item,
a.CNumber,
a.Location,
a.Date
FROM YPTImport a
WHERE NOT EXISTS
(SELECT *
FROM YPImport b 
WHERE a.CNumber = b.CNumber AND a.Location = b.Location AND a.Date= b.Date)

【讨论】:

以上是关于SQL IF 存在还是 WHERE 存在?的主要内容,如果未能解决你的问题,请参考以下文章

使用具有一个条件的 WHERE 子句运行 100 个 SQL 查询,还是使用具有 100 个条件的 WHERE 子句的一个查询更好?

sql中where 之后怎么加if条件判断

SQL 存在的问题

SQL夯实基础:连接操作中使用on与where筛选的差异

如何在 SQL 查询中动态跳过没有 If else 的 where 子句?

sql语句有关where,group by,having的问题