Saltar al contenido principal
La función de tabla Values le permite crear un almacenamiento temporal que rellena columnas con valores. Resulta útil para realizar pruebas rápidas o generar datos de ejemplo.
Values es una función que no distingue entre mayúsculas y minúsculas. Es decir, tanto VALUES como values son válidos.

Sintaxis

La sintaxis básica de la función de tabla VALUES es:
VALUES([structure,] values...)
Se suele usar como:
VALUES(
    ['column1_name Type1, column2_name Type2, ...'],
    (value1_row1, value2_row1, ...),
    (value1_row2, value2_row2, ...),
    ...
)

Argumentos

  • column1_name Type1, ... (opcional). String que especifica los nombres y tipos de columna. Si se omite este argumento, las columnas se denominarán c1, c2, etc.
  • (value1_row1, value2_row1). Tuples que contienen valores de cualquier tipo.
Las tuplas separadas por comas también pueden sustituirse por valores individuales. En este caso, cada valor se considera una nueva fila. Consulta la sección de ejemplos para obtener más información.

Valor devuelto

  • Devuelve una tabla temporal que contiene los valores proporcionados.

Ejemplos

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 también puede usarse con valores individuales en lugar de tuplas. Por ejemplo:
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 │
    └──────────┘
O bien, sin proporcionar una especificación de fila ('column1_name Type1, column2_name Type2, ...' en la sintaxis), en cuyo caso las columnas se nombran automáticamente. Por ejemplo:
Query
-- tuplas como valores
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
-- valores individuales
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 │
    └──────────┘

Cláusula VALUES del estándar SQL

A partir de la versión 26.3, ClickHouse también admite la cláusula VALUES del estándar SQL como una expresión de tabla en FROM, tal como se utiliza en PostgreSQL, MySQL, DuckDB y SQL Server. Esta sintaxis se reescribe internamente para usar la función de tabla values descrita anteriormente.
Query
SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t(id, val);
Response
┌─id─┬─val─┐
│  1 │ a   │
│  2 │ b   │
│  3 │ c   │
└────┴─────┘
Puede usarse en CTEs:
Query
WITH cte AS (SELECT * FROM (VALUES (1, 'one'), (2, 'two')) AS t(id, name))
SELECT * FROM cte;
Y en los JOINs:
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;
Los alias de columna después de AS t(col1, col2, ...) siguen la sintaxis SQL estándar para nombrar las columnas de las tablas derivadas. Si se omiten, las columnas se llaman c1, c2, etc.

Véase también

Última modificación el 10 de junio de 2026