支援的版本:目前 (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';

預設情況下,PostgreSQL 會將名稱 column1column2 等指派給 VALUES 資料表的資料行。 資料行名稱不是由 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 的一部分,或將 sort_specificationORDER BYLIMIT 和/或 OFFSET)附加到它。 VALUES 最常用於 INSERT 命令中的資料來源,其次最常用作子查詢。

有關更多資訊,請參閱 VALUES

提交更正

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