在SQL语句中选择常量而不引用表是完全合法的:
SELECT 1, 2, 3
后者返回的结果集是包含值的单行。我想知道是否有一种方法可以使用常量表达式一次选择多行,类似于:
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
我想要像上面那样工作,并返回一个3行3列的结果集。
在SQL语句中选择常量而不引用表是完全合法的:
SELECT 1, 2, 3
后者返回的结果集是包含值的单行。我想知道是否有一种方法可以使用常量表达式一次选择多行,类似于:
SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))
我想要像上面那样工作,并返回一个3行3列的结果集。
当前回答
SELECT *
FROM DUAL
CONNECT BY ROWNUM <= 9;
其他回答
在MySQL中,你可以这样做:values (1,2), (3,4);
mysql> values (1,2), (3, 4);
+---+---+
| 1 | 2 |
+---+---+
| 1 | 2 |
| 3 | 4 |
+---+---+
2 rows in set (0.004 sec)
在MySQL 8中,也可以给列命名:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt (a, b, c, d);
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
| 1 | 2 | 3 | 4 |
+---+---+---+---+
使用SQLite3,下面选择Go .QueryContext()
VALUES (1), (2)
返回名为“Column1”的单个未类型化列 还有两行值分别为1和2
VALUES是简单SELECT语句的特殊形式 https://www.sqlite.org/lang_select.html#simpleselect
试试oracle中的connect by子句,就像这样
select level,level+1,level+2 from dual connect by level <=3;
有关connect by子句的更多信息,请参见此链接:已删除URL,因为oraclebin站点现在是恶意的。
SELECT 1, 2, 3
UNION ALL SELECT 4, 5, 6
UNION ALL SELECT 7, 8, 9
下面介绍如何使用DB2的XML特性来实现这一点
SELECT *
FROM
XMLTABLE ('$doc/ROWSET/ROW' PASSING XMLPARSE ( DOCUMENT '
<ROWSET>
<ROW>
<A val="1" /> <B val="2" /> <C val="3" />
</ROW>
<ROW>
<A val="4" /> <B val="5" /> <C val="6" />
</ROW>
<ROW>
<A val="7" /> <B val="8" /> <C val="9" />
</ROW>
</ROWSET>
') AS "doc"
COLUMNS
"A" INT PATH 'A/@val',
"B" INT PATH 'B/@val',
"C" INT PATH 'C/@val'
)
AS X
;