返回不存在的ID

时间:2012-08-15 23:14:56

标签: php mysql

我有一个ID列表,我编写了一个MYSQL查询来获取有关这些ID的信息。

我需要的是找出数据库中不再存在哪些ID以从ID列表中删除它们的方法。

是否有一个简单的解决方案可以做到我现在想不到的那个?

2 个答案:

答案 0 :(得分:1)

创建一个附加(临时)表,用一个ID列表填充它,然后执行查询以查找不存在的id。例如 -

CREATE TEMPORARY TABLE temp(id INT);
INSERT INTO temp VALUES (1), (2), (8), (10);

-- View non existing ID:
SELECT t.id FROM temp t
  LEFT JOIN your_table a 
    ON a.id = t.id
  WHERE a.id IS NULL;

DROP TEMPORARY TABLE IF EXISTS temp;

然后在php应用程序中读取此数据集并更新ID列表。

答案 1 :(得分:0)

这是写不知道你的桌子结构,从而使我的头顶,但... ...

如果您有两个表,ID和INFO,例如:

ID (IDCOL int, DATEENTERED datetime)
INFO (INFOID int, ID_ID int, ID_NAME varchar(50))

然后你可以查询

SELECT * FROM ID WHERE IDCOL NOT IN (SELECT ID_ID FROM INFO)

这应该返回ID中没有相应条目的所有条目。

之后就是编写适当的删除语句。

整个过程可以用

一步完成
DELETE FROM ID WHERE IDCOL NOT IN (SELECT ID_ID FROM INFO)

但我通常更喜欢在已定义的事务中执行删除操作,您可以检查以确保在将更改提交到数据库之前没有将其搞砸。