即使表不包含给定的行,也返回WHERE IN子句行

时间:2019-07-03 14:34:20

标签: mysql sql

mytable包含id,1、2、3、10、12和20的记录,特别是不包含id 5和15的记录。

如何执行某些查询,例如:

SELECT id, id IN (1,5,10,15,20) AS status
FROM mytable
WHERE id IN (1,5,10,15,20);

并返回记录:

id  status
1   true
5   false
10  true
15  false
20  true

如果还有其他表,我可以外部连接mytable,但没有一个。以下内容当然行不通,但是我可以加入某种虚构的表格吗?

SELECT id, isnull(mytable.id) AS status
FROM *
LEFT OUTER JOIN mytable
WHERE id IN (1,5,10,15,20);

1 个答案:

答案 0 :(得分:1)

您可以在FROM子句中创建一个派生表

SELECT i.id, (t.id is not null) AS status
FROM (SELECT 1 as id UNION ALL SELECT 5 UNION ALL SELECT 10 UNION ALL SELECT 15 UNION ALL SELECT 20
     ) i LEFT JOIN
     mytable t
     ON i.id = t.id;