Mysql 获取表中不存在的ID列表

Mysql 获取表中不存在的ID列表,mysql,sql,Mysql,Sql,我有一个ID列表,我想查询mysql表中不存在的ID e、 g mysql表 id 1 3 5 6 .. 查询应返回[2,4],因为这些ID不在表中,因为我们无法查看您的代码,所以我只能在模拟上工作 还是试试这个吧 SELECT id FROM list_of_ids WHERE id NOT IN (SELECT id FROM table) 我希望这能有所帮助有一种可怕的基于文本的黑客行为: SELECT substr(re

我有一个ID列表,我想查询mysql表中不存在的ID

e、 g

mysql表

id 
1
3
5
6
..

查询应返回
[2,4]
,因为这些ID不在表中

,因为我们无法查看您的代码,所以我只能在模拟上工作

还是试试这个吧

    SELECT id FROM list_of_ids
    WHERE id NOT IN (SELECT id
                     FROM table)

我希望这能有所帮助

有一种可怕的基于文本的黑客行为:

SELECT
  substr(result,2,length(result)-2) AS notmatched 
FROM (
  SELECT
    @set:=replace(@set,concat(',',id,','),',') AS result 
  FROM (
    select @set:=concat(',',
      '1,2,4' -- your list here
    ,',')
  ) AS setinit,
  tablename --Your tablename here
) AS innerview  
ORDER BY LENGTH(result) 
LIMIT 1;

如果将ID表示为派生表,则可以直接在SQL中执行此操作:

select list.val
from (select 1 as val union all
      select 2 union all
      select 4
     ) list left outer join
     t
     on t.id = list.val
where t.id is null;
SQL实际上没有“列表”类型,因此您的问题是不明确的。如果您指的是逗号分隔的字符串,那么文本黑客可能会起作用。如果你指的是一张桌子,那么像这样的东西可能会有用。如果您正在构造SQL语句,我建议您采用这种方法,因为这样会更有效

select list.val
from (select 1 as val union all
      select 2 union all
      select 4
     ) list left outer join
     t
     on t.id = list.val
where t.id is null;