2012-09-28 65 views
0

我正在通過cron運行一個PHP MySQL命令腳本(cleanup.php),它從aggregator_item表(下表2)中刪除重複內容和BS內容。問題是隨着時間的推移,aggregator_category_item表(下面的表1)包含太多未被引用的行。需要從Drupal MySQL數據庫中刪除未引用的行

理想情況下,表1和表2應該有相同的行數。

我需要一個MySQL命令,請求mysql_query(),這將刪除aggregator_category_item表中的所有行(表1)下列條件:

如果IDD數aggregator_category_item表(表1)在aggregator_item表(表2)中找到NOT,然後從aggregator_category_item表(表1)中刪除這些未引用的行。我想將這個MySQL刪除命令添加到我當前的MySQL命令cron腳本中。

以下是在Drupal的數據庫中的以下兩個表:

Table 1: aggregator_category_item (145,000 rows) 
----------------------------------------------- 
iid  cid 
6644403 2 


Table 2: aggregator_item (8700 rows) 
------------------------------------ 
iid  fid title link  author description timestamp 
6644403 25 hello http://...   hello there 1348243145 

回答

2
delete from aggregator_category_item 
where iid not in (select iid from aggregator_item) 
+0

這會是我使用命令: 的mysql_query(來自'singlein_drpl1'「刪除'aggregator_category_item' WHERE IID沒有(選擇來自aggregator_item的iid)「); – Sammy

+0

謝謝。我將如何編寫命令放置在一個php文件(cleanup.php)中。數據庫名稱是singlein_drpl1 – Sammy

+0

@Sammy這將是最好的問題作爲一個新的問題。 – RedFilter