我有一个id列表,我想在mysql表中查询表中没有的id。
e.g。
list_of_ids = [1,2,4]
mysql表
id
1
3
5
6
..
查询应该返回[2,4]
,因为这些是不在表中的ID
答案 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语句,我会建议你沿着这条路走下去,因为它应该更有效率。