- Categorias:
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> [, ... ] ) ] ]
[ ... ]
Parâmetros¶
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.
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.
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 deDEFAULT
(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 | +---------+-------+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;
Você também pode especificar aliases para os nomes das colunas:
SELECT c1, c2 FROM (VALUES (1, 'one'), (2, 'two')) AS v1 (c1, c2);