Categorias:

Sintaxe de consulta

VALUES

Na instrução SELECT, a subcláusula VALUES da cláusula FROM permite a especificação de um conjunto de constantes a serem usadas para formar um conjunto finito de linhas.

(Para obter mais informações sobre a cláusula VALUES na instrução INSERT, consulte a documentação da instrução INSERT).

Sintaxe

SELECT ...
FROM ( VALUES ( <expr> [ , <expr> [ , ... ] ] ) [ , ( ... ) ] ) [ [ AS ] <table_alias> [ ( <column_alias> [, ... ] ) ] ]
[ ... ]
Copy
table_alias

Um alias opcional pode ser usado para dar um nome ao conjunto de linhas, como se o conjunto de linhas fosse uma tabela.

column_alias

Os alias opcionais das colunas podem ser usados para dar nomes às colunas.

expr

Cada expressão deve ser uma constante, ou uma expressão que possa ser avaliada como uma constante durante a compilação da instrução SQL.

A maioria das expressões aritméticas simples e funções de cadeia de caracteres podem ser avaliadas no tempo de compilação, mas a maioria das outras expressões não podem.

Notas de uso

  • Dentro de uma cláusula FROM, uma cláusula VALUES não pode conter a palavra-chave DEFAULT. Isto está em contraste com uma cláusula VALUES em uma instrução INSERT, que oferecer suporte ao uso de DEFAULT (por exemplo, INSERT INTO table VALUES (10, DEFAULT, 'Name') ...).

  • A cláusula VALUES é limitada a 16.384 linhas.

Exemplos

A cláusula VALUES é útil para gerar um conjunto fixo e conhecido de linhas:

SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three'));

+---------+---------+
| COLUMN1 | COLUMN2 |
|---------+---------|
|       1 | one     |
|       2 | two     |
|       3 | three   |
+---------+---------+

SELECT column1, $2 FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three'));

+---------+-------+
| COLUMN1 | $2    |
|---------+-------|
|       1 | one   |
|       2 | two   |
|       3 | three |
+---------+-------+
Copy

Observe que os valores podem ser referenciados pela coluna “nome” (implícito) ou pela posição da coluna.

Se sua consulta usa múltiplas cláusulas VALUES, você pode usar um alias para distingui-las, por exemplo:

SELECT v1.$2, v2.$2
  FROM (VALUES (1, 'one'), (2, 'two')) AS v1
        INNER JOIN (VALUES (1, 'One'), (3, 'three')) AS v2
  WHERE v2.$1 = v1.$1;
Copy

Você também pode especificar aliases para os nomes das colunas:

SELECT c1, c2
  FROM (VALUES (1, 'one'), (2, 'two')) AS v1 (c1, c2);
Copy