mysql - 查找表中不存在的行

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

最佳答案

这是一种黑客攻击,但您可以使用您想要检查的 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/

相关文章:

mysql - SQL查询获取最近的交易日期

mysql - UTC_TIMESTAMP() 是否受夏令时影响?

SQL如何在特定日期之前显示数据

mysql - 在 XAMPP 上获取错误消息

php - 将 B 列复制到 A 列(排序)

php - Reddit式的投票系统,如何避免重复投票?

mysql - 计算查询表中的行数

c# - 如何在 ASP.NET 中编写 SQL Server 查询?

sql - 如何在sql中获取某个时间范围内每个月的第一条和最后一条记录

python - sqlite3 : create function regexp with python