如何从不存在的表中生成包含多行值的test列?
无实体表生成多行test列的解决方案
你原来的SQL语句SELECT ('val1', 'val2') as "test"会将两个值打包成一个复合字段返回,最终只得到一行数据,而非预期的两行。以下是不同主流数据库的正确实现方式:
MySQL/MariaDB
使用UNION ALL合并多个单行查询:
SELECT 'val1' AS test UNION ALL SELECT 'val2' AS test;
PostgreSQL
可以用更简洁的VALUES子句:
SELECT test FROM (VALUES ('val1'), ('val2')) AS t(test);
或者直接返回:
VALUES ('val1'), ('val2') AS test;
SQL Server
同样支持UNION ALL或VALUES子句:
-- 方式1:UNION ALL SELECT 'val1' AS test UNION ALL SELECT 'val2' AS test; -- 方式2:VALUES子句 SELECT test FROM (VALUES ('val1'), ('val2')) AS t(test);
内容的提问来源于stack exchange,提问作者trilisser
相关产品推荐
相关产品推荐

