2012-08-15 82 views
0

我有一個ID列表,我編寫了一個MYSQL查詢來獲取有關這些ID的信息。返回不存在的ID

我需要的是一種方法來確定哪些ID不再在數據庫中從ID列表中刪除它們。

有沒有一個簡單的解決方案來做到這一點,我現在無法想象?

+5

返回數據庫中的所有ID並將它們與ID數組進行比較。刪除那些不匹配的文件 – 2012-08-15 23:16:09

+0

這個ID列表在哪裏?在另一張桌子?在一個PHP數組? ..? – 2012-08-15 23:23:17

+0

該列表基本上是一個php數組,我需要將其與數據庫中的表進行比較。 – user1601869 2012-08-15 23:31:12

回答

0

該文章不知道你的表結構,從而使一上來把我的頭頂部,但...

如果你有兩個表,身份證件和信息,如:

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中的所有條目那裏是不是在INFO相應的條目。

之後,這是一個寫適當的刪除語句的情況。

整個事情可以在一個步驟中完成與

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

但我一般喜歡做我刪除定義的事務,你可以檢查,以確保你沒有搞砸了你提交之前對數據庫的更改。

+0

而我從上面的評論中看到,我的答案是基礎的,因爲它不是全部都在數據庫中:) – Adrian 2012-08-15 23:46:19

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