【问题标题】:MySQL to remove rows past the current date and transfer them to another tableMySQL 删除当前日期之后的行并将它们转移到另一个表
【发布时间】:2022-01-16 03:58:36
【问题描述】:

我的任务是为我的项目创建一个健身房系统的数据库,我需要有关我应该为我的程序使用什么 MySQL 查询的帮助。

第一个查询:删除 TBL_ACTIVEMEMBER 中 END 列日期超过当前日期的行。

第二个查询:将那些已删除的行传输并插入到另一个 TBL_INACTIVEMEMBER 表中。

这些是我的表格:

  1. TBL_ACTIVEMEMBER:
+------+---------+--------+----------+----------+------------+------------+
| AMID | GYMID   | INSTID | TYPE     | TERM     | START      | END        |
+------+---------+--------+----------+----------+------------+------------+
|    1 | 2021001 |   4502 | Gold     | 3 Months | 2021-12-18 | 2022-03-18 |
|    2 | 2021003 |   4504 | Platinum | 3 Months | 2021-12-13 | 2022-03-13 |
|    3 | 2021002 |   4502 | Silver   | 3 Months | 2022-01-15 | 2022-04-15 |
|    4 | 2021004 |   4502 | Platinum | 5 Months | 2021-12-25 | 2022-05-25 |
|    5 | 2021006 |   4503 | Silver   | 5 Months | 2021-12-18 | 2022-05-18 |
|    6 | 2021007 |   4502 | Silver   | 1 Month  | 2021-12-24 | 2022-01-24 |
|    7 | 2021008 |   4501 | Gold     | 3 Months | 2021-12-18 | 2022-03-18 |
|    8 | 2021008 |   4503 | Platinum | 1 Month  | 2021-12-12 | 2022-01-12 |
|    9 | 2021009 |   4502 | Silver   | 3 Months | 2022-01-08 | 2022-04-08 |
+------+---------+--------+----------+----------+------------+------------+
  1. TBL_INACTIVEMEMBER:
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| INAMID| int(11) | NO   | PRI | NULL    | auto_increment |
| GYMID | int(11) | YES  |     | NULL    |                |
| END   | date    | NO   |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+

【问题讨论】:

    标签: mysql database sql-insert sql-delete delete-row


    【解决方案1】:
    INSERT INTO TBL_INACTIVEMEMBER (Column1, Column2, ColumnN) 
    SELECT * FROM TBL_ACTIVEMEMBER where END < CURRENT_TIMESTAMP();
    

    这会将所需的值插入到表TBL_INACTIVEMEMBER 中。根据需要更改列名。

    现在从表 TBL_ACTIVEMEMBER 中删除非活动值,

    DELETE FROM TBL_ACTIVEMEMBER WHERE END < CURRENT_TIMESTAMP()
    

    【讨论】:

    • 非常感谢您的回答。效果很好。
    猜你喜欢
    • 2017-02-16
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多