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 先删除从某个日期开始的表数据,然后再插入一个新的?
是的,您可以DELETE
在INSERT
. 如果您在事务中执行此操作,它们本质上将是一个操作,它们将一起失败或成功(假设该表使用事务引擎,例如 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)