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);
答案 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;