Перейти к основному содержанию
Табличная функция Values позволяет создавать временное хранилище, заполняющее столбцы значениями. Она полезна для быстрого тестирования или генерации примерных данных.
Values — регистронезависимая функция. То есть допустимы оба варианта: VALUES и values.

Синтаксис

Базовый синтаксис табличной функции VALUES выглядит так:
VALUES([structure,] values...)
Обычно используется так:
VALUES(
    ['column1_name Type1, column2_name Type2, ...'],
    (value1_row1, value2_row1, ...),
    (value1_row2, value2_row2, ...),
    ...
)

Аргументы

  • column1_name Type1, ... (необязательно). String задаёт имена столбцов и типы. Если этот аргумент опущен, столбцы будут называться c1, c2 и т. д.
  • (value1_row1, value2_row1). Tuple содержит значения любого типа.
Tuple, разделённые запятыми, также можно заменить отдельными значениями. В этом случае каждое значение рассматривается как новая строка. Подробности см. в разделе примеры.

Возвращаемое значение

  • Возвращает временную таблицу с переданными значениями.

Примеры

Query
SELECT *
FROM VALUES(
    'person String, place String',
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
Response
    ┌─person───┬─place─────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘
VALUES также можно использовать с отдельными значениями, а не с кортежами. Например:
Query
SELECT *
FROM VALUES(
    'person String',
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
Response
    ┌─person───┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘
Или без указания спецификации строки ('column1_name Type1, column2_name Type2, ...' в синтаксисе) — в этом случае столбцы будут названы автоматически. Например:
Query
-- кортежи в качестве значений
SELECT *
FROM VALUES(
    ('Noah', 'Paris'),
    ('Emma', 'Tokyo'),
    ('Liam', 'Sydney'),
    ('Olivia', 'Berlin'),
    ('Ilya', 'London'),
    ('Sophia', 'London'),
    ('Jackson', 'Madrid'),
    ('Alexey', 'Amsterdam'),
    ('Mason', 'Venice'),
    ('Isabella', 'Prague')
)
Response
    ┌─c1───────┬─c2────────┐
 1. │ Noah     │ Paris     │
 2. │ Emma     │ Tokyo     │
 3. │ Liam     │ Sydney    │
 4. │ Olivia   │ Berlin    │
 5. │ Ilya     │ London    │
 6. │ Sophia   │ London    │
 7. │ Jackson  │ Madrid    │
 8. │ Alexey   │ Amsterdam │
 9. │ Mason    │ Venice    │
10. │ Isabella │ Prague    │
    └──────────┴───────────┘
Query
-- одиночные значения
SELECT *
FROM VALUES(
    'Noah',
    'Emma',
    'Liam',
    'Olivia',
    'Ilya',
    'Sophia',
    'Jackson',
    'Alexey',
    'Mason',
    'Isabella'
)
Response
    ┌─c1───────┐
 1. │ Noah     │
 2. │ Emma     │
 3. │ Liam     │
 4. │ Olivia   │
 5. │ Ilya     │
 6. │ Sophia   │
 7. │ Jackson  │
 8. │ Alexey   │
 9. │ Mason    │
10. │ Isabella │
    └──────────┘

Стандартная SQL-конструкция VALUES

Начиная с версии 26.3, ClickHouse также поддерживает стандартную SQL-конструкцию VALUES как табличное выражение в FROM, как в PostgreSQL, MySQL, DuckDB и SQL Server. Этот синтаксис внутренне преобразуется с использованием описанной выше табличной функции values.
Query
SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t(id, val);
Response
┌─id─┬─val─┐
│  1 │ a   │
│  2 │ b   │
│  3 │ c   │
└────┴─────┘
Его можно использовать в CTE:
Query
WITH cte AS (SELECT * FROM (VALUES (1, 'one'), (2, 'two')) AS t(id, name))
SELECT * FROM cte;
И в JOIN:
Query
SELECT t1.id, t1.val, t2.val2
FROM (VALUES (1, 'a'), (2, 'b')) AS t1(id, val)
JOIN (VALUES (1, 'x'), (2, 'y')) AS t2(id, val2) ON t1.id = t2.id;
Псевдонимы столбцов после AS t(col1, col2, ...) соответствуют стандартному синтаксису SQL для именования столбцов производных таблиц. Если они опущены, столбцы получают имена c1, c2 и т. д.

См. также

Последнее изменение 10 июня 2026 г.