MySQL 8.0.19+ 行别名写法
MySQL 8.0.19+ 行别名写法
INSERT INTO dw.orders (order_id, amount, status, updated_at)
VALUES (?, ?, ?, ?) AS new
ON DUPLICATE KEY UPDATE
amount = new.amount,
status = new.status,
updated_at = new.updated_at;| 前提 | 目标表要有主键或唯一索引,否则 upsert 退化 |
|---|---|
| 旧写法 | VALUES(col) 引用方式 8.0.20 起被弃用 |
| MERGE | Hive 3 / Spark / Iceberg / Delta 的通用替代 |
| 删除处理 | op=d 需要 DELETE 或墓碑标记,不能只 upsert |
Hive 的 MERGE 需要表具备事务特性(如 ORC + ACID)等条件,使用前先确认表属性。