在数据库中,我有大量包含日期的表。这些是确切的到期日期。
当前,我使用以下命令执行以下命令以删除任何早于指定日期的行:
DELETE FROM tablename WHERE DATE(datepoint) < '2019-03-18'
1)是否有一种方法可以代替整个表搜索和删除而不是每次手动更改表名并运行命令?
答案 0 :(得分:1)
您可以使用PHP函数,无论如何,我不建议删除任何记录,仅过滤过去3个月的查询
答案 1 :(得分:0)
也许考虑在其自己的表EXPIRY_DATES中具有到期日期。听起来这可能是您域中的重要概念。然后,使用外键让其他表指向正确的到期日期。当您从EXPIRY_DATES删除一个到期日期时,使用EXPIRY_DATES上的删除级联规则将清除所有子表中的记录。
答案 2 :(得分:0)
您应该使用过程(或函数):
定义一个过程:
mysql> CREATE PROCEDURE delete_from_table(OUT table_name char(20))
-> BEGIN
-> delete from table_name WHERE DATE(datepoint) < '2019-03-18';
-> END//
mysql> delimiter ;
呼叫程序:
mysql> CALL delete_from_table(@table1);
mysql> CALL delete_from_table(@table2);
mysql> CALL delete_from_table(@table3);