- 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> [, ... ] ) ] ]
[ ... ]
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 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);