我有这个查询工作正常。它根据当前时间删除旧记录。
$cleanacc_1 = "DELETE FROM $acc_1
WHERE `Scheduled` < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 SECOND)";
$result = mysql_query($cleanacc_1);
但是,有超过100个表(帐户)需要删除,我想知道我是否可以将它们组合成一个查询。如果可能的话怎么办?
答案 0 :(得分:0)
无法做到这一点,AFAIK;无论如何,我认为运行100个查询并不是一个大问题,假设你没有为每个请求运行那个...
您是否期待性能问题?如果是这种情况,我可能会使用cron作业每隔X分钟运行一次查询..
答案 1 :(得分:0)
您可以设置表的视图,然后对视图运行delete sql。那也应该删除基础表数据。您的表架构和权限可能会影响这是否有效。看看这个答案,它也可能会有所帮助。
Does deleting row from view delete row from base table - MYsql?
答案 2 :(得分:0)
这意味着您为每个帐户创建一个新表。为什么不在单个表中为每个帐户创建记录?
例如......
create table account (id int unsigned primary key auto_increment, other fields...);
如果您更改了表格结构,则可以使用单个查询删除单个帐户记录...
delete from account where condition=true;
然后将每个帐户的个人交易记录存储在另一个表中,并包含与...相关的帐户ID。
create table transaction (id, account_id, other transaction fields);
如果不更改数据库设计,则需要编写循环遍历每个表的PHP代码并运行删除查询。这是非常低效的,我建议你按照建议重新设计表格。
如果您不明白为什么我的表格redsign建议是一种更好的方法,请发布有关您的数据库的更多信息,我将通过一个工作示例更详细地解释。
答案 3 :(得分:0)
请考虑以下示例。
我在以下结构中有三个表。
表名:t1,t2,t3
字段:Id,名称
我将使用一个条件执行删除查询,该条件的重新编码id必须小于10.
DELETE FROM t1, t2,t3 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id<10 and t2.id<10 and t3.id<10.
查询已成功执行(MySql)。我得到了预期的输出。
所以请以同样的方式尝试你的病情。