Passer au contenu principal
La fonction de table Values vous permet de créer un stockage temporaire dont les colonnes sont remplies de valeurs. Elle est utile pour effectuer des tests rapides ou générer des données d’exemple.
Values est une fonction insensible à la casse. Autrement dit, VALUES et values sont tous les deux valides.

Syntaxe

La syntaxe de base de la fonction de table VALUES est la suivante :
VALUES([structure,] values...)
Il s’utilise généralement comme suit :
VALUES(
    ['column1_name Type1, column2_name Type2, ...'],
    (value1_row1, value2_row1, ...),
    (value1_row2, value2_row2, ...),
    ...
)

Arguments

  • column1_name Type1, ... (facultatif). String indiquant les noms et les types des colonnes. Si cet argument est omis, les colonnes seront nommées c1, c2, etc.
  • (value1_row1, value2_row1). Tuples contenant des valeurs de n’importe quel type.
Les tuples séparés par des virgules peuvent également être remplacés par des valeurs individuelles. Dans ce cas, chaque valeur est interprétée comme une nouvelle ligne. Consultez la section exemples pour plus de détails.

Valeur renvoyée

  • Renvoie une table temporaire contenant les valeurs spécifiées.

Exemples

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 peut également être utilisé avec des valeurs simples plutôt qu’avec des tuples. Par exemple :
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 │
    └──────────┘
Ou sans fournir de spécification de ligne ('column1_name Type1, column2_name Type2, ...' dans la syntaxe), les colonnes étant alors nommées automatiquement. Par exemple :
Query
-- tuples as values
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
-- single values
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 │
    └──────────┘

Clause VALUES standard SQL

À partir de la version 26.3, ClickHouse prend également en charge la clause VALUES standard SQL en tant qu’expression de table dans FROM, comme dans PostgreSQL, MySQL, DuckDB et SQL Server. Cette syntaxe est réécrite en interne pour utiliser la fonction de table values décrite ci-dessus.
Query
SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t(id, val);
Response
┌─id─┬─val─┐
│  1 │ a   │
│  2 │ b   │
│  3 │ c   │
└────┴─────┘
Il peut être utilisé dans des CTE :
Query
WITH cte AS (SELECT * FROM (VALUES (1, 'one'), (2, 'two')) AS t(id, name))
SELECT * FROM cte;
Et dans les clauses 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;
Les alias de colonnes après AS t(col1, col2, ...) suivent la syntaxe SQL standard pour nommer les colonnes des tables dérivées. S’ils sont omis, les colonnes sont nommées c1, c2, etc.

Voir aussi

Dernière modification le 25 juin 2026