在我的表中,poster_display_no 的值为 1 和 3,但没有 2。我想获取表中不存在的 poster_display_no。以下查询未按预期工作。知道上面的查询出了什么问题吗?
select `poster_display_no` as missing_num
from `poster-judging-app`.poster_details
where `poster_display_no` not in (1,2,3)
最佳答案
这是一种黑客攻击,但您可以使用您想要检查的 poster_display_no
列表构建一个派生表,left join
与您的表并过滤缺失的:
select t.poster_display_no
from (
select 1 poster_display_no
union all select 2
union all select 3
) t
left join poster_details p on p.poster_display_no = t.poster_display_no
where p.poster_display_no is null
另一个更具可扩展性的选项是创建一个单独的引用表来存储您要检查的 poster_display_no
列表,然后将该表直接引入查询。
关于mysql - 查找表中不存在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360667/