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

标签 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);

最佳答案

您可以在 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/

相关文章:

mysql - 在 MySQL 中仅检索固定数量的行

mysql - 更快或并行地将 csv 文件加载到 mysql 中

sqlite - 将数据插入 blob

SQL 索引和性能改进

mysql - Qt MySQL -------- 无法打开包含文件 : 'mysql.h' :

php - 如何自动将 'strip_tags' 附加到所有数据库选择查询?

Mysql子查询返回null

python - ORDER BY SQLAlchemy 中的子查询

mysql - 完全外连接中的语法错误?

sql - SQL Server 中的 ISNULL 与 IS NULL