Mysql 获取表中不存在的ID列表
我有一个ID列表,我想查询mysql表中不存在的ID e、 g mysql表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
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;