当前位置: 首页 > 面试题库 >

SQL:选择一个表中不存在的键

简滨海
2023-03-14
问题内容

我得到了一个带有自动公司常规设置的桌子。ID。一些行已被删除,因此ID列表可能如下所示:

(1,2,3,5,8,…)

然后,从另一个来源( 编辑:另一个来源=数据库中不存在 ),我得到了这个数组:

(1、3、4、5、7、8)

我正在寻找我可以在数据库上使用的查询,以从我拥有的数组中获取表中未包含的ID:s的列表。可能是:

(4、7)

是否存在?我现在的解决方案是创建一个临时表,以便命令“ WHERE table.id IS
NULL”起作用,或者更糟糕的是,使用PHP函数array_diff来查看从表中检索到所有ID后丢失的内容。

由于ID列表即将关闭数百万或数行,因此我急切希望找到最佳解决方案。

谢谢!/托马斯

编辑2:

我的主要应用程序是一个相当简单的表,其中填充了很多行。此应用程序是使用浏览器进行管理的,而我使用的是PHP作为代码的解释器。

该表中的所有内容都将导出到另一个系统(这是第三方产品),除在该程序中手动使用导入功能外,尚无其他方法。也可以在其他系统中插入新行,尽管约定的路由永远不要这样做。

然后的问题是,我的系统无法百分百确定用户从按下“导出”键时所做的一切都正确。或者,在其他系统中从未创建任何行。

从另一个系统中,我可以得到一个CSV文件,该文件是系统所有行所在的位置。因此,通过比较CSV文件和我的表,我可以看到是否:其他系统中应该丢失的任何行都应该导入的如果某人在其他系统中创建了行

问题不在于“解决”。最好的解决方案是,因为行中有太多数据。

再次感谢!

/托马斯


问题答案:

我们可以选择不使用MYSQL。

SELECT id
FROM table_one
WHERE id NOT IN ( SELECT id FROM table_two )

已编辑

如果要从 csv文件 获取源代码,则只需将这些值直接放入即可,例如:

我假设CSV像1,2,3,…,n

SELECT id
FROM table_one
WHERE id NOT IN ( 1,2,3,...,n );

编辑2

或者,如果您想选择其他方法,则可以用来mysqlimport在MySQL数据库的临时表中导入数据,然后检索结果并删除该表。

喜欢:

建立表格

CREATE TABLE my_temp_table(
   ids INT,
);

加载.csv文件

LOAD DATA LOCAL INFILE 'yourIDs.csv' INTO TABLE my_temp_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(ids);

选择记录

SELECT ids FROM my_temp_table
WHERE ids NOT IN ( SELECT id FROM table_one )

下降表

DROP TABLE IF EXISTS my_temp_table


 类似资料:
  • 问题内容: 主题表 SubjectToClass表 我需要列出的所有行,其中的表是不是在指定类的表。 我有这个但不能再走了 问题答案:

  • 问题内容: 我有一个关于ORACLE的问题,我写了一个PLSQL CODE来检查一个表是否存在,如果存在,那么我从该表中选择一些东西。 如果(表存在)从表中选择…。 问题是,即使表条件不存在且select语句从不执行,即使表不存在,我也总是会收到错误消息。 我认为这是因为在编译时检查了我的代码:“ select from ..”,如果表不存在,则会打印错误。我该如何解决这样的问题?..这是我的代码

  • 问题内容: 我正在尝试查找一个表中的行,而不是另一个表中的行,这两个表都在不同的数据库中,并且在我要用来匹配的列上也有不同的列名。 我有一个查询,下面的代码,我认为它可能有效,但是速度太慢: 因此查询尝试执行以下操作: 从R2R.partmaster数据库中选择wpsapi4.product_details数据库中没有的所有ID。我匹配的列是partmaster.id和product_detail

  • 问题内容: table1 (id, name) table2 (id, name) 询问: 问题答案: SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL 问 :这是怎么回事? 答 :从概念上讲,我们从中选择所有行,并为每一行尝试在其中找到具有相同值的行。如果没有这

  • 问题内容: 有这张桌子 和这个 我如何从表“项目”中选择所有行并显示字段“已删除”,即使在给定用户ID的情况下,即使“ MyList”中不存在itemID? 查询结果示例: 什么是查询,以便我可以得到该结果? 谢谢 问题答案: 我不确定这是否是最好的方法,但它会返回我一直在寻找的内容:

  • 问题内容: 所以这是我的设置,我有2个具有以下(简化)模式的旧表和新表 我正在寻找一种SQL查询,该查询返回以下内容,但在1个查询中包含4列,而不是每个2列包含2个查询 因此,我理想的结果集将包含4列: 谢谢! 问题答案: 您是否尝试过JOIN语句: