在SQL语句中选择常量而不引用表是完全合法的:

SELECT 1, 2, 3

后者返回的结果集是包含值的单行。我想知道是否有一种方法可以使用常量表达式一次选择多行,类似于:

SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9))

我想要像上面那样工作,并返回一个3行3列的结果集。


当前回答

这种方法可以帮助你

SELECT   TOP 3
         1 AS First, 
         2 AS Second, 
         3 AS Third 
FROM     Any_Table_In_Your_DataBase

Any_Table_In_Your_DataBase:任何包含超过3条记录的表,或者使用任何系统表。这里我们不关心该表的数据。

您可以通过连接Any_Table_In_Your_DataBase表中的第一列、第二列和第三列来带来结果集的变化。

其他回答

下面的裸值命令为我在PostgreSQL工作:

VALUES (1,2,3), (4,5,6), (7,8,9)

使用SQLite3,下面选择Go .QueryContext()

VALUES (1), (2)

返回名为“Column1”的单个未类型化列 还有两行值分别为1和2

VALUES是简单SELECT语句的特殊形式 https://www.sqlite.org/lang_select.html#simpleselect

select (level - 1) * row_dif + 1 as a, (level - 1) * row_dif + 2 as b, (level - 1) * row_dif + 3 as c
    from dual 
    connect by level <= number_of_rows;

就像这样

select (level - 1) * 3 + 1 as a, (level - 1) * 3 + 2 as b, (level - 1) * 3 + 3 as c
    from dual 
    connect by level <= 3;

在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 |
+---+---+---+---+

试试oracle中的connect by子句,就像这样

select level,level+1,level+2 from dual connect by level <=3;

有关connect by子句的更多信息,请参见此链接:已删除URL,因为oraclebin站点现在是恶意的。