我有一个ID列表,我需要找到MySQL中的表中缺少哪些ID

时间:2014-04-30 15:42:36

标签: mysql excel

我有一个ID号的excel列表,我需要找到列出的哪些号码不存在作为某个表中的主键。

我尝试过像

这样的事情
="Select * from table where `exchangeID` =" &A1&";"
在Excel中

,以便为每一行生成select语句。我认为通过对不存在的ID运行select会返回错误。然而,有几百个ID,除了返回最后一对的结果之外,复制和粘贴巨大的选择列表并没有做太多。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

将列表插入表(可以是临时表),然后使用LEFT JOIN连接到表。

这样的事情: -

CREATE TABLE temp
(
ID_NUMBER INT
);

INSERT INTO temp VALUES (1), (2), (3)

然后是JOIN

SELECT a.ID_NUMBER
FROM temp a
LEFT OUTER JOIN sometable b
ON a.ID_NUMBER = b.exchangeID
WHERE b.exchangeID IS NULL

答案 1 :(得分:1)

对不起,我的第一个回答错误地解决了问题,重新阅读。

要查找数据库中不在Excel中的所有ID:

让您的Excel生成一列ID,如下所示:

="'" & A1 & "',"

将结果列复制并粘贴到文本文件中(记事本等)。

将此文本复制到SQL语句中:

select * from table where not `echangeID` in ([paste your list here]);

不要忘记从列表中删除最后一个(逗号)。

要查找Excel中不在电子表格中的所有值:

您需要将Excel中的值插入另一个表中。您可以使用.csv导入轻松完成此操作。

select id from [Excel table] where not id in (select id from [original table]);

答案 2 :(得分:1)

我不清楚Excel如何适应您的问题,但这样的事情可能会起作用

select * from table where exchangeID not in (34,35,39,101,102)

其中34,35,39,101和102是有趣的id号列表