2012-09-28 62 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