簡體   English   中英

如何從mysql數據庫中刪除不在數組中的所有元素?

[英]How to delete all elements from a mysql database which are not in an array?

我有一個xml文件,其中包含要插入mysql數據庫的數據。 現在我已經在數據庫中有了條目,因此應該更新這些條目,不應該添加現有條目,並且-現在出現了問題-應該刪除數據庫中而不是xml中的條目。 因此,我嘗試創建2個數組,其中一個包含xml數據的一些比較值,例如$array_new["some1"] = "test"; $array_new["some2] = "test2"; $array_new["some1"] = "test"; $array_new["some2] = "test2";

另一個包含舊數據,例如$array_old["some1"] = "something"; $array_old["some2"] = "test2"; $array_old["some1"] = "something"; $array_old["some2"] = "test2";

現在,我想比較這兩個數組並將兩個中都不存在的所有值添加到新數組中。 我嘗試使用array_diff,但這只會將兩個數組中都不存在的一個值添加到新數組中。 但是我需要在一個新數組中擁有所有具有相同鍵的值,以便刪除它們。

任何人都知道如何做到這一點? 謝謝!

假設您的表具有唯一索引(主鍵),並且xml數據具有可用的相同鍵數據,請執行以下步驟:

1)從表中刪除不在數組中的所有記錄:

DELETE FROM tablename WHERE unique_field NOT IN (<comma seperated list or keys>)

2)運行INSERT ... ON DUPLICATE KEY UPDATE類型查詢:

INSERT INTO tablename VALUES (a, b, c) ON DUPLICATE KEY UPDATE field1 = a, ...

使用' not in '創建一個where子句not in只有您創建標識符,例如implode(",", $array)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM