首页 > 解决方案 > 对查询结果 MySQL 执行查询

问题描述

我想查询一个查询以找到不匹配的 id。我有一个 ID 列表,我想要所有关于它们的信息,所以我做了一个简单的查询,例如:

SELECT * FROM table1 WHERE id IN(list_of_ids);

请注意“list_of_ids”是一个包含 274 个数字的列表,如下例所示(格式如下(number1, number2, number3)

+---------+   
|   id    |   
+---------+   
|  112234 |       
|  345657 |  
|   45332 |        
| 1234665 |     
|  213423 |  
+---------+

我输出了 151 行,所以有些 ID 我没有得到任何信息。我想看看哪些是那些 ID,只是为了进行质量检查,看看查询/错字是否有错误,或者我真的没有关于这些的任何信息(我怀疑)。

我尝试了一些我发现搜索的方法,但没有一个有效(如使用函数VALUES和创建临时表)

我知道我可以简单地用一列和这个值创建一个新表,然后沿着这条线做一些事情

SELECT * id2 FROM table2 JOIN table1 WHERE id2 NOT LIKE id1";

(还没有测试过,但我想它可能会起作用)

但我觉得这是我以后会有点频繁面对的事情,所以我更喜欢更直接的方式来做这件事,而不是每次都创建一个表。此外,我认为学习一种更直接的方式比为这样的“简单”任务创建和删除表更可取

有没有办法做类似的事情

SELECT id2 FROM subquery JOIN table1 WHERE id2 != id1 FROM (SELECT * FROM table1 WHERE id IN (list_of_ids)) AS subquery;

我知道,这永远不会奏效,而只是为了给我想要实现的目标一种味道。对不起眼睛流血!

谢谢!

标签: mysqlsubquerynested-queries

解决方案


只需在第二部分使用一个UNION函数,如下所示:NOT IN

SELECT * FROM table1 WHERE id IN(list_of_ids) UNION SELECT * FROM table1 WHERE id NOT IN(list_of_ids);

我希望这是你想要的。


推荐阅读