首页 > 解决方案 > 如何在不与 sql 中的其他表比较的情况下显示不在表中的数据

问题描述

我有一张名为 FILEINFO 的表。每天都会出现一些文件名(大约 100 个)。我需要检查名称是否存在于表中。在单个查询中

提前致谢

标签: mysqlsqloracle-sqldeveloperbackendplsqldeveloper

解决方案


我不知道这是否适合您的数据管道,但这里一种干净的方法是将这些新传入的文件名写入某种表(临时或永久)中,然后使用简单的存在查询来检查它们是否已经存在于您当前的表中,例如

SELECT filename AS new_file
FROM temp_names t1
WHERE NOT EXISTS (SELECT 1 FROM FILEINFO t2 WHERE t2.filename = t1.filename);

如果您只想插入新文件名,您可以使用类似的逻辑,例如

INSERT INTO FILEINFO (filename)
SELECT filename
FROM temp_names t1
WHERE NOT EXISTS (SELECT 1 FROM FILEINFO t2 WHERE t2.filename = t1.filename);

推荐阅读