0

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

我需要一种方法来确定哪些 ID 不再在数据库中,以便从 ID 列表中删除它们。

有没有一个简单的解决方案来做我现在想不到的事情?

4

2 回答 2

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 列表。

于 2012-08-16T06:09:58.137 回答
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)

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

于 2012-08-15T23:24:34.183 回答