TRUNCATE TABLE tgt_t1;
TRUNCATE TABLE tgt_t2;
TRUNCATE TABLE tgt_t3;
INSERT ALL
WHEN id <= 1 THEN
INTO tgt_t1(id, name) VALUES(id, name)
WHEN id BETWEEN 1 AND 2 THEN
INTO tgt_t2(id, name) VALUES(id, name)
INTO tgt_t3(id, name) VALUES(id, name)
SELECT * FROM src_table;
SELECT * FROM tgt_t1;
ID|NAME |
1|张三 |
SELECT * FROM tgt_t2;
ID|NAME |
1|张三 |
2|李四 |
SELECT * FROM tgt_t3;
ID|NAME |
3|王五 |
tgt_t1 中插入了 1 条数据,因为 id 小于等于 1 的记录只有 1 个。tgt_t2 中插入了 2 条数据,包括 id 等于 1 的记录。也就是说,前面的 WHEN 子句不会影响后续的条件判断,每个条件都会单独进行判断。tgt_t3 中插入了 1 条数据,ELSE 分支只会插入不满足前面所有条件的数据。
📝有条件的多表插入语句最多支持 127 个 WHEN 子句。