在潜在ID列表中查找无效的记录ID

时间:2010-03-03 03:35:55

标签: mysql

鉴于可能的ID列表是使用单个MYSQL查询的快速方法,可以计算出哪些ID(如果有的话)在数据库中没有相关记录。

e.g。如果列表是1,3,4并且记录存在1和4而不是3,那么查询将从列表中返回3。

这需要应用于包含15000条记录的数据库,以检查可能包含零个或多个无效ID的1到100个ID的列表。该列表来自外部,而不是另一个表。

2 个答案:

答案 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);