mysql - mysql中的条件反转

标签 mysql sql

我有一个包含 ID 的表和一个 ID 列表 (1,3,4,5,2,29,24)。我可以通过此类查询查看该列表中的哪些 ID:

select * from tbl1 where id in (1,3,4,5,2,29,24)

但是是否可以在不创建临时表的情况下从这个 id 列表中看到不存在于 tbl1 中的数字?有点像

select * from tbl1 where (1,3,4,5,2,29,24) not in id

最佳答案

您可以在查询中使用派生表:

select id
from (select 1 as id union all select 3 union all select 4 union all select 5 union all
      select 2 union all select 29 union all select 24
     ) id
where not exists (select 1 from tbl1 where tbl1.id = id.id);

如果您想查看表中和不在表中的 ID,请使用 left join:

select id.id, tbl1.*
from (select 1 as id union all select 3 union all select 4 union all select 5 union all
      select 2 union all select 29 union all select 24
     ) id left join
     tbl1
     on tbl1.id = id.id;

关于mysql - mysql中的条件反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34093373/

相关文章:

php - mysql数据库中出现奇怪的字符

php - 为什么每个新闻站点只能显示一个标签?

javascript - 不止一次获取两点之间的距离

mysql 查询改进与连接问题

mysql - 通过 id 值从存在于另一个表条件的表中选择值

sql - 如何在 postgresql 查询中将行转换为列

sql - 如何在一个语句中使用单个值对多行进行 UPSERT?

sql - 如果 SQLite 数据库被报告损坏 SQLITE_CORRUPT 我是否应该最终确定我的语句

python - PYODBC 错误 07002 - 参数太少

php - 使用 PHP 将日期和时间保存到 MySQL 时遇到问题