我有一个ID列表,我编写了一个MYSQL查询来获取有关这些ID的信息。
我需要的是找出数据库中不再存在哪些ID以从ID列表中删除它们的方法。
是否有一个简单的解决方案可以做到我现在想不到的那个?
答案 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)
但我通常更喜欢在已定义的事务中执行删除操作,您可以检查以确保在将更改提交到数据库之前没有将其搞砸。