mysql select IN 如果id不存在则返回null

标签 mysql select

我有一个这样的表:

+----+---------+---------+
| Id | column1 | column2 |
+----+---------+---------+
|  1 | a       | b       |
|  2 | a       | b       |
+----+---------+---------+

和这样的查询 SELECT * FROM table WHERE id IN (1,2,3)

我需要什么查询才能得到这样的结果(我需要为不存在的 ID 获取空值):

+----+---------+---------+
| Id | column1 | column2 |
+----+---------+---------+
|  1 | a       | b       |
|  2 | a       | b       |
|  3 | null    | null    |
+----+---------+---------+

编辑

感谢到目前为止的回复。

是否有更“动态的方式”来执行此操作,上面的查询只是一个示例。 实际上我需要检查大约 1000 个 ID!

最佳答案

你可以使用这样的东西:

SELECT ids.ID, your_table.column1, your_table.column2
FROM
  (SELECT 1 as ID
   UNION ALL SELECT 2
   UNION ALL SELECT 3) ids left join your_table
  on ids.ID = your_table.ID

第一个子查询在不同的行中返回您需要的每个值。然后你可以尝试用 your_table 连接每一行。如果您使用 left join,则会显示第一个子查询中的所有值,如果与 your_table 匹配,则会显示来自 your_table 的值,否则你会得到空值。

关于mysql select IN 如果id不存在则返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886940/

相关文章:

mysql - 链接到同一个引用表的多个 MySQL 列

mySQL查询优化,范围/复合索引/分组依据

mysql - 按另一个表中列出的多个表中的公共(public)列分组

php - 从列中选择时间具有带 sql 的日期时间格式

select - Mysql 计数列

mysql - 获取每周更改的 10 行随机行(精选条目)

c# - .NET 连接器只返回第一条记录

javascript - jquery change() 事件表现得很奇怪

Javascript 选择 onchange ='this.form.submit()'

javascript - MySQL 选择共享该字段值的所有值