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);
最佳答案
您可以在 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;
关于mysql - 即使表不包含给定行,也返回 WHERE IN 子句行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56872454/