获取表中不存在的ID列表

时间:2013-06-09 20:46:27

标签: mysql sql

我有一个id列表,我想在mysql表中查询表中没有的id。

e.g。

list_of_ids = [1,2,4]

mysql表

id 
1
3
5
6
..

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

3 个答案:

答案 0 :(得分:0)

因为我们无法查看你的代码我只能在假设上工作

无论如何试试

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

我希望这会有所帮助

答案 1 :(得分:0)

有一个可怕的基于文本的黑客:

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;

答案 2 :(得分:0)

如果您将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语句,我会建议你沿着这条路走下去,因为它应该更有效率。