MYSQL IN子句问题

时间:2014-02-26 19:58:16

标签: mysql

stackoverflow上发布的很多问题几乎和我的问题一样,但我找不到有效的解决方案。我有一个表消息,条目是:

id | Message | Status
1  |  Hello  |  1
2  |  Hiiii  |  0
4  |  Works  |  1

我有另一个表格给出了ID 1,2,3我希望从消息表中找到所有这些条目的状态。我想要的是如果消息表中不存在id,那么如果我使用IN子句来查找所有状态,它应该为该id返回null。我想要以下结果:

id | Status
1  | 1
2  | 0
3  | null

我一直在使用IN子句但没有得到工作输出。然后我在stackoverflow上得到了一个解决方案并尝试了这个查询

SELECT `id`,`status` FROM ( SELECT 1 AS ID UNION ALL SELECT 2 AS ID UNION ALL SELECT 3) ids LEFT OUTER JOIN message ON ids.ID = message.id

但是这个查询没有给出预期的结果。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我看不出你的查询是如何工作的。 id中的列select应该不明确(除非您的数据库区分大小写)。试试这个:

SELECT ids.ID, m.status
FROM ( SELECT 1 AS ID UNION ALL SELECT 2 AS ID UNION ALL SELECT 3
     ) ids LEFT OUTER JOIN
     message m
     ON ids.ID = m.id;