从多个表中删除多行MYSQL

从多个表中删除多行MYSQL,mysql,sql-delete,Mysql,Sql Delete,我有一个很好的问题。它删除基于当前时间的旧记录 $cleanacc_1 = "DELETE FROM $acc_1 WHERE `Scheduled` < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 SECOND)"; $result = mysql_query($cleanacc_1); $cleanacc\u 1=“从$acc\u 1删除 其中`Scheduled`请考虑下面的例子。 我有三个表,结构如下 表名:t1、t2、t3 字段:Id

我有一个很好的问题。它删除基于当前时间的旧记录

$cleanacc_1 = "DELETE FROM $acc_1 
    WHERE `Scheduled` < DATE_SUB(UTC_TIMESTAMP(), INTERVAL 30 SECOND)";

$result = mysql_query($cleanacc_1);
$cleanacc\u 1=“从$acc\u 1删除
其中`Scheduled`

但是,有100多个表(帐户)需要删除,我想知道是否可以将它们合并到一个查询中。如果可能的话怎么办?

没办法,好吧;无论如何,我不认为运行100个查询是一个大问题,假设您没有为每个请求运行100个查询


您是否预期性能问题?如果是这种情况,我可能会使用cron作业每隔X分钟运行一次该查询。

您可以设置表的视图,然后针对该视图运行delete sql。这也应该删除基础表数据。您的表架构和权限可能会影响此操作是否有效。看看这个答案,也许会有帮助


这意味着您要为每个帐户创建一个新表。为什么不在单个表中为每个帐户创建记录

例如

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代码。这是非常低效的,我敦促您按照建议重新设计表格


如果你不明白为什么我的表ReReStand建议是一个更好的方法,请发布更多关于你的数据库的信息,我将用一个工作实例更详细地解释。

< P>请考虑下面的例子。 我有三个表,结构如下

表名:t1、t2、t3

字段:Id,name

我将用一个条件执行删除查询,其中重新编码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.

使用t1内部连接t2内部连接t3从t1、t2、t3中删除t1.idI同意,先生,我应该重新设计。然而,我正在学习MySQL,所以请对我放松:-)除了表名之外,我有不同的表用于不同的帐户;结构是相同的,即Id、帐户、计划、消息i也执行多个select语句,这会对处理器造成影响。你建议我如何继续?谢谢,我设法使用了一张桌子,它既高效又易于管理。谢谢你这项工作,但我不得不改成一个表来减轻处理器的负载。