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
但是这个查询没有给出预期的结果。任何帮助将不胜感激。
答案 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;