鉴于可能的ID列表是使用单个MYSQL查询的快速方法,可以计算出哪些ID(如果有的话)在数据库中没有相关记录。
e.g。如果列表是1,3,4并且记录存在1和4而不是3,那么查询将从列表中返回3。
这需要应用于包含15000条记录的数据库,以检查可能包含零个或多个无效ID的1到100个ID的列表。该列表来自外部,而不是另一个表。
答案 0 :(得分:1)
SELECT idtable.id, records.id as rid FROM idtable
LEFT JOIN records ON idtable.id = records.id
WHERE rid IS NULL
答案 1 :(得分:0)
对我以前的回答感到抱歉 - 我的不好,我读得太快了。
在纯SQL中没有干净的方法(干净的意思是不涉及丑陋的子查询,联合或临时表)。如果是我,我可能会这样做(假设PHP):
$all_ids = array(1, 3, 4);
$query = "SELECT id FROM table1 WHERE id IN (" . implode(',', $all_ids) . ")";
$found_ids = getArrayFromQuery($query);
$invalid_ids = array_diff($all_ids, $found_ids);