插入前删除数据

Pet*_*zov 0 mysql mariadb insert mariadb-10.3

我有这个表,用于生成带有结果的第二个表:

INSERT INTO payment_transactions_daily_facts (count, volume, date, year, month, week, day, transaction_type, contract_id, merchant_id, terminal_id, status, card_brand, currency)
SELECT
        COUNT(*) count,
        SUM(amount) volume,
        DATE(created_at) date,
        YEAR(created_at) year,
        MONTH(created_at) month,
        WEEK(created_at) week,
        DAY(created_at) day,
        type transaction_type,
        contract_id, merchant_id, terminal_id,
        status, card_brand, currency
        FROM payment_transactions
        WHERE created_at BETWEEN '2018-11-11' AND '2018-11-14'
        GROUP by date, contract_id, merchant_id, terminal_id, transaction_type, status, card_brand, currency
Run Code Online (Sandbox Code Playgroud)

但是我需要在插入之前删除旧数据。有没有办法用一个 SQL 先删除从某个日期开始的表数据,然后再插入一个新的?

ype*_*eᵀᴹ 5

是的,您可以DELETEINSERT. 如果您在事务中执行此操作,它们本质上将是一个操作,它们将一起失败或成功(假设该表使用事务引擎,例如 InnoDB):

START TRANSACTION ;

    DELETE FROM
        payment_transactions_daily_facts
    WHERE
        date BETWEEN '2018-11-11' AND '2018-11-14' ;

    INSERT INTO
        payment_transactions_daily_facts
        (count, volume, date, ...)
    SELECT
         ...  ;

COMMIT ;
Run Code Online (Sandbox Code Playgroud)