SQLite中如何在确认表为空后插入多行数据?
在SQLite中确认表为空后插入多行数据的实现方法
你可以基于原单行方案的思路,通过NOT EXISTS判断表是否为空,结合UNION ALL拼接多行数据源来实现批量插入,以下是两种常用场景的代码示例:
插入固定多行值
如果要插入的是预先定义好的多行数据,用UNION ALL把多个单行SELECT语句组合起来,作为插入的数据源:
INSERT INTO your_table (column1, column2, column3) SELECT 'value1_1', 'value1_2', 'value1_3' UNION ALL SELECT 'value2_1', 'value2_2', 'value2_3' UNION ALL SELECT 'value3_1', 'value3_2', 'value3_3' WHERE NOT EXISTS (SELECT 1 FROM your_table);
- 外层的
WHERE NOT EXISTS (SELECT 1 FROM your_table)会先检查表是否为空,只有空表时才执行插入操作 - 使用
UNION ALL而非UNION来拼接数据,避免不必要的去重操作,提升效率 - 要保证每个
SELECT的列数、数据类型和目标表的列完全匹配
从其他表批量插入
如果要插入的数据来自另一个表,直接在SELECT中查询源表数据即可:
INSERT INTO target_table (target_col1, target_col2) SELECT source_col1, source_col2 FROM source_table WHERE NOT EXISTS (SELECT 1 FROM target_table);
这种写法会在目标表为空时,将源表的指定数据批量插入到目标表中。
内容的提问来源于stack exchange,提问作者Abdulkerim Awad
相关产品推荐
相关产品推荐

