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

SELECT 1, 2, 3

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

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

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


当前回答

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

VALUES (1), (2)

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

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

其他回答

Oracle。 感谢这篇文章PL/SQL -在Where in子句中使用“List”变量

我把我的示例语句放在一起,以便轻松地手动输入值(测试人员在测试应用程序时重用):

WITH prods AS (
    SELECT column_value AS prods_code 
    FROM TABLE(
        sys.odcivarchar2list(
            'prod1', 
            'prod2'
        )
    )
)
SELECT * FROM prods

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

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

对于Microsoft SQL Server或PostgreSQL,您可能想要尝试此语法

SELECT constants FROM (VALUES ('foo@gmail.com'), ('bar@gmail.com'), ('baz@gmail.com')) AS MyTable(常量)

你也可以在这里查看一个SQL Fiddle: http://www.sqlfiddle.com/#!17/9eecb / 34703/0

在Oracle中

SELECT
  CASE
    WHEN level = 1
    THEN 'HI'
    WHEN level = 2
    THEN 'BYE'
  END TEST
FROM dual
  CONNECT BY level <= 2;

这种方法可以帮助你

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表中的第一列、第二列和第三列来带来结果集的变化。