如何使用SELECT语句结合CTE生成正确的行列结构数据表?
如何用CTE生成预期的两行数据表?
你当前的SQL写法错误在于,select (10001, 1), (10002, 2) 里的括号会被解析为行构造器,每组括号内的两个值会被当作单个复合值,最终生成1行2列的结果,而非你需要的2行2列。
以下两种写法可以实现你的需求:
方法1:使用UNION ALL拼接行
with sorting(item_code, index) as ( select 10001, 1 union all select 10002, 2 ) select * from sorting
方法2:使用VALUES子句构造多行数据(主流数据库均支持)
with sorting(item_code, index) as ( values (10001, 1), (10002, 2) ) select * from sorting
说明
- 方法1通过
UNION ALL将两个独立的SELECT结果合并,每个SELECT返回一行两列的数据,最终得到目标的两行结构。 - 方法2用
VALUES子句直接定义多行数据集,语法更简洁,适合生成固定的测试或基础数据。
内容的提问来源于stack exchange,提问作者mandaputtra
相关产品推荐
相关产品推荐

