2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

7.7. VALUES 列表 #

VALUES 提供了一種在查詢中生成“常量表”的方法,而無需實際在磁碟上建立和填充表。語法如下:

VALUES ( expression [, ...] ) [, ...]

每一組由括號括起來的表示式列表生成表中的一行。列表必須具有相同數量的元素(即表中的列數),並且每個列表中對應的條目必須具有相容的資料型別。為結果的每一列分配的實際資料型別是根據與 UNION 相同的規則確定的(參見 第 10.5 節)。

例如:

VALUES (1, 'one'), (2, 'two'), (3, 'three');

將返回一個包含兩列三行的表。它實際上等同於:

SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';

預設情況下,PostgreSQLVALUES 表的列分配名稱 column1column2 等。列名不是由 SQL 標準指定的,不同的資料庫系統有不同的處理方式,因此通常最好使用表別名列表覆蓋預設名稱,如下所示:

=> SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)

從語法上講,VALUES 後跟表示式列表被視為等同於:

SELECT select_list FROM table_expression

並且可以出現在任何 SELECT 可以出現的地方。例如,您可以將其用作 UNION 的一部分,或者為其附加一個 排序規範ORDER BYLIMIT 和/或 OFFSET)。VALUES 最常用於 INSERT 命令中的資料來源,其次是作為子查詢。

有關更多資訊,請參閱 VALUES

提交更正

如果您在文件中發現任何不正確、與您在使用特定功能時的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。