VALUES предоставляет способ создания «константной таблицы»,
которая может быть использована в запросе без необходимости фактического создания и заполнения таблицы на диске. Синтаксис команды:
VALUES ( expression [, ...] ) [, ...]
Каждая заключенная в скобки последовательность выражений формирует строку в таблице. Все списки должны иметь одинаковое количество элементов (то есть количество столбцов в таблице), а соответствующие записи в каждом списке должны иметь совместимые типы данных. Фактический тип данных, назначаемый каждому столбцу
результата, определяется по тем же правилам, что и для UNION
(см. Раздел 2.7.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';
По умолчанию Digital Q.DataBase назначает имена
column1, column2и так далее столбцам
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 , за которым следуют списки выражений, считается эквивалентным:
команда SELECTselect_listпредложение FROMtable_expression
и может использоваться везде, где допустима SELECT can. Например, вы можете
использовать его как часть UNION, или присоединить
sort_specification (ORDER BY,
LIMIT, и/или OFFSET) к нему. VALUES
чаще всего используется в качестве источника данных в INSERT ,
а также в качестве подзапроса.
Для получения дополнительной информации см. раздел VALUES.