查找表中不存在的行

时间:2019-12-16 16:31:53

标签: mysql sql

在我的表中,有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) 

1 个答案:

答案 0 :(得分:2)

这是一种hack,但是您可以使用要检查的poster_display_no列表,left join和列表来构建派生表,并过滤掉丢失的列表:< / p>

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列表,然后将该表直接带到查询中。