创建SQL临时表#1并插入客户ID列表的技术问题排查
问题排查与正确实现方案
错误点分析
- 列名不匹配:临时表
#1定义的列是CUSTOMER_ID,但INSERT语句中指定的列是id,数据库会因找不到id列报错。 - VALUES子句格式错误:原代码中所有客户ID写在同一个括号内,会被解析为同一行的多个字段值,而非每行一个客户ID,导致插入结果不符合预期。
正确实现代码
方法1:多行VALUES插入(适合少量数据)
CREATE TABLE #1 ( CUSTOMER_ID VARCHAR(255) ) -- 每个客户ID单独用括号包裹,实现逐行插入 INSERT INTO #1 (CUSTOMER_ID) VALUES ('123t'), ('23x4'), ('4g56'), ('5k67'), ('5k07'), ('1g36'), ('21x4') SELECT * FROM #1
方法2:SELECT UNION ALL插入(适合大量数据)
CREATE TABLE #1 ( CUSTOMER_ID VARCHAR(255) ) INSERT INTO #1 (CUSTOMER_ID) SELECT '123t' UNION ALL SELECT '23x4' UNION ALL SELECT '4g56' UNION ALL SELECT '5k67' UNION ALL SELECT '5k07' UNION ALL SELECT '1g36' UNION ALL SELECT '21x4' SELECT * FROM #1
执行上述任意代码后,SELECT * FROM #1会返回每行一个客户ID的结果,符合预期。
内容的提问来源于stack exchange,提问作者Nabi Shaikh
相关产品推荐
相关产品推荐

