WHERE permite filtrar os dados que vêm da cláusulaFROM de SELECT.
Se houver uma cláusula WHERE, ela deve ser seguida de uma expressão do tipo UInt8.
As linhas para as quais essa expressão resulta em 0 são excluídas de transformações posteriores ou do resultado.
A expressão que segue a cláusula WHERE costuma ser usada com operadores de comparação e operadores lógicos, ou com uma das muitas funções regulares.
A expressão na cláusula WHERE é avaliada considerando a possibilidade de usar índices e poda de partições, se o engine de tabela subjacente oferecer suporte a isso.
PREWHERETambém há uma otimização de filtragem chamada
PREWHERE.
PREWHERE é uma otimização para aplicar a filtragem com mais eficiência.
Ela é habilitada por padrão mesmo que a cláusula PREWHERE não seja especificada explicitamente.Verificar NULL
NULL, use:
IS NULLouisNullIS NOT NULLouisNotNull
NULL nunca será avaliada como verdadeira.
Filtrando dados com operadores lógicos
WHERE para combinar várias condições:
Usando colunas UInt8 como condição
UInt8 podem ser usadas diretamente como condições booleanas, em que 0 é false e qualquer valor diferente de zero (geralmente 1) é true.
Um exemplo disso é mostrado na seção abaixo.
Usando operadores de comparação
Correspondência de padrões e expressões condicionais
WHERE.
Consulte “Correspondência de padrões e expressões condicionais” para ver exemplos de uso.
Expressão com literais, colunas ou subconsultas
WHERE também pode incluir literais, colunas ou subconsultas, que são instruções SELECT aninhadas que retornam valores usados em condições.
Você pode combinar literais, colunas e subconsultas em condições complexas:
Exemplos
Verificando NULL
NULL:
Filtrando dados com operadores lógicos
AND - ambas as condições devem ser atendidas:
OR - pelo menos uma condição deve ser atendida:
NOT - Nega uma condição:
XOR - Exatamente uma condição deve ser verdadeira (mas não ambas):
AND, OR, NOT, XOR) geralmente é mais legível, mas a sintaxe de função pode ser útil em expressões complexas ou ao criar consultas dinâmicas.
Usando colunas UInt8 como condição
Usando operadores de comparação
= 1 ou = true):
false (= 0 ou = false):
!= 0 ou != false):
IN:
No exemplo abaixo, (1, true) é uma tupla.