温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mysql - Return WHERE IN clause rows even if table doesn't contain the given row
mysql sql

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

发布于 2020-03-27 11:16:32

mytable包含1、2、3、10、12 id和20的记录,特别是不包含id5和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);

查看更多

查看更多

提问者
user1032531
被浏览
166
Gordon Linoff 2019-07-03 22:37

您可以子句中创建派生表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;