Ramos da InformáticaBanco de DadosSQL WHERE 1: O que é e por que...

SQL WHERE 1: O que é e por que usar o truque do WHERE 1=1?

-

Eleve seu desenvolvimento com o Cursor

Eu utilizo o Cursor diariamente para acelerar meu fluxo. Use meu link e garanta 50% de desconto no seu primeiro mês dos planos Pro, Pro+ ou Ultra.

Resgatar meu desconto * Apenas para novos usuários

Entenda o que significa WHERE 1 (ou WHERE 1=1) no SQL. Aprenda como esse truque facilita a criação de consultas dinâmicas e quando utilizá-lo no seu backend. SQL WHERE 1: O que é e por que usar o truque do WHERE 1=1

A verdade da questão é que a cláusula WHERE 1=1 é meramente uma convenção adotada por alguns desenvolvedores para tornar o trabalho com suas instruções SQL um pouco mais fácil, tanto na forma estática quanto dinâmica.

VAI GOSTAR:

21 comandos SQL essenciais e avançados e conteúdos extras

Dica de Leitura: Se você está trabalhando com consultas SQL dinâmicas e quer otimizar a performance, é importante entender como as funções e procedimentos podem ser usados em conjunto com suas consultas. Confira nosso artigo sobre SQL – Diferenças Entre Funções e Procedures para uma visão mais profunda sobre como esses elementos podem melhorar sua gestão de banco de dados.

Melhores práticas em modelagem de banco de dados e SQL

SQL – Diferenças entre Not IN e Not EXISTS

Também é uma prática comum ao criar uma consulta SQL programaticamente. É mais fácil começar com ‘WHERE 1=1 ‘ e, em seguida, acrescentar outros critérios, como ‘ AND customer.id=:custId’, dependendo se um ID de cliente é ou não fornecido. Isso permite que o desenvolvedor acrescente o próximo critério na consulta começando com ‘AND…’. Aqui está um exemplo hipotético:

stmt  = "SELECT * "
stmt += "FROM TABLE "
stmt += "WHERE 1=1 "
if user chooses option a then stmt += "and A is not null "
if user chooses option b then stmt += "and B is not null "
if user chooses option b then stmt += "and C is not null "
if user chooses option b then stmt += "and D is not null "

Pontos interessantes a serem levantados para esta solução com WHERE 1 = 1.

Clareza de código

Uma vantagem desta técnica é que o código acaba ficando mais limpo, pois assim não precisa existir o controle da presença do WHERE vs AND/OR, mantendo independente a ordem dos filtros que vão entrar na consulta e se algum filtro vai entrar na consulta.

Impacto na performance

Existe uma dúvida recorrente com relação ao impacto de performance no banco de dados da presença do WHERE 1 = 1, independente se há outros filtros ou não. O que posso dizer que a maioria dos bancos de dados não sofre qualquer impacto de performance ao utilizar esta técnica.

Fazendo uma análise de impacto na plano de execução do Sql Server, com 10.000 registros em uma tabela, não notou-se qualquer mudança entre o plano contendo WHERE 1 = 1 e do plano sem o mesmo.

Outra opção

Alguns bancos de dados suportam também WHERE 1, embora esta não seja a opção recomendada por não fazer parte do padrão ANSI.

Exemplos de uso de WHERE + 1

Quando as condições do where são geradas dinamicamente, e o programador vai acrescentando-as com AND dentro de ifs, por estas dependerem de outros fatores do programa que gera o SQL, fica clara sua intenção:Se nao houver condição adicional, a query permanece assim …

SELECT * FROM Destinatario where 1 = 1

… mas no caso, se for verdadeira a condição logo em seguida do seu exemplo, ela pode ficar:

english-interview-debugger.sh
$ grep -r "senior_dev_communication" ./career
[CRITICAL_ERROR] Código sênior detectado, mas fluência falhou no runtime.
Motivo: Travou na hora de explicar a arquitetura (System Design) em inglês para o gringo.

O mercado internacional não quer um robô de gramática. Quer um dev que saiba defender uma tomada de decisão técnica sob pressão. Destrave sua conversão na Preply com aulas particulares focadas em TI.

$ ./fix-english.sh --target=remote-job
Achar Professor Particular ➔
SELECT * FROM Destinatario where 1 = 1 AND Nome = "Ramos da Informática"

Note que se não houvesse o WHERE 1=1, ela ficaria desta forma, e não funcionaria:

SELECT * FROM Destinatario AND Nome = "Ramos da Informática" 
  -- temos um erro aqui --^

Para uma condição AND só, o autor poderia ter posto o WHERE dentro da condição, mas se forem varias condiçoes, o WHERE 1=1 permitiria várias condições separadas, montadas por ifs diferentes:

SELECT * FROM Destinatario where 1 = 1
SELECT * FROM Destinatario where 1 = 1 AND Nome = "Ramos da Informática"
SELECT * FROM Destinatario where 1 = 1 AND Cidade = "Uberlândia"
SELECT * FROM Destinatario where 1 = 1 AND Nome = "Ramos da Informática" AND Cidade = "Uberlândia"

Assim, o AND Nome poderia estar em um if e o AND Cidade em outro, e todos funcionariam independente de ter que saber se já há um if anterior no código que gera o SQL.

Como mencionado pelo @bfavaretto, o CakePHP, por exemplo, utiliza esta técnica.

Particularmente, acho melhor usar maneiras mais limpas do que como foi usado, como concatenar com AND somente quando se tratar da 2ª condição em diante, mas cada um tem seus critérios, e em cada momento uma determinada técnica pode ser melhor do que outra.

Saindo desse exemplo específico de uso, pode até acontecer de alguém usar um WHERE “neutro” quando quer testar alguma condição durante o desenvolvimento do código, eliminando a condição original (equivalente a colocar WHERE true, que também serviria para a explicação inicial), mas isto já é outra história.

No nosso caso em específico, o IF desta linha confirma a hipótese inicial do parâmetro opcional com AND:

IF(@param IS NOT NULL) -- <== Aqui
SET @sql = (@sql + ' AND Nome = ''' + @param + '''');

Conclusão

Neste artigo, aprendemos a resposta para a antiga pergunta de “qual é o propósito do WHERE 1=1?” Não é uma técnica de otimização avançada, mas uma convenção de estilo adotada por alguns desenvolvedores.

Perguntas Frequentes (FAQ): SQL WHERE 1 e WHERE 1=1

O uso de WHERE 1=1 deixa a consulta SQL mais lenta?

Não de forma perceptível. Os otimizadores de consulta (Query Optimizer) da maioria dos SGBDs modernos (como MySQL, PostgreSQL e SQL Server) identificam que 1=1 é uma tautologia (sempre verdadeira) e simplesmente a ignoram durante o plano de execução. O custo de processamento é virtualmente zero.

Por que não usar apenas WHERE em vez de WHERE 1=1?

O uso do 1=1 é uma técnica de conveniência para programação dinâmica. Se você está montando uma query no backend e tem 5 filtros opcionais, sem o 1=1 você teria que checar se cada filtro é o “primeiro” para decidir se escreve WHERE ou AND. Com o 1=1, você começa a query com ele e todos os seus filtros reais podem começar com AND sem erro de sintaxe.

Existe alguma diferença entre WHERE 1 e WHERE 1=1?

Depende do banco de dados. No MySQL, o 1 é aceito como um atalho para TRUE. No entanto, em bancos mais rigorosos como o SQL Server ou PostgreSQL, o WHERE 1 pode causar um erro de tipo (esperando um booleano e recebendo um inteiro). Por isso, o padrão universalmente aceito e mais seguro é o WHERE 1=1.

Ramos da Informática
JS TS IA

Pesquisa: Como você está usando IA na sua rotina Dev?

Responda em menos de 2 minutos e ajude a direcionar nossos próximos artigos técnicos, guias e conteúdos.

Responder Pesquisa →
Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

Sincronizando PostgreSQL e Turbopuffer com Puffgres

Guia Definitivo: Sincronizando PostgreSQL e Turbopuffer com Puffgres para Buscas Vetoriais Avançadas A integração de inteligência artificial em aplicações modernas...

3 Técnicas para Reduzir Consumo de Tokens no Claude Code e Codex

Aprenda 3 técnicas eficientes para reduzir o consumo de tokens no Claude Code e Codex. Otimize custos, melhore a...

Entenda Componentes de Cache no Next.js

O modelo de cache do Next.js 16 por trás das Navegações Instantâneas. Aprenda a usar use cache, cacheLife e...

Grok 4.5: mais rápido e integrado ao Cursor

O laboratório de IA de Elon Musk, agora com nova identidade visual, acaba de dar mais um passo à...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Cloudflare Monetization Gateway Está Redefinindo a Economia da IA

Cloudflare lança o Cloudflare Monetization Gateway que permite cobrar por APIs, dados e sites via micropagamentos em stablecoins. O...

Configuração do GLM-5.2 no Cursor via OpenRouter

Descubra o GLM-5.2, o novo modelo de pesos abertos que rivaliza com GPT-5.5 em tarefas agênticas. Aprenda a configurar...

Mais Lidos

10 Melhores Extensões do Chrome para Desenvolvedores Web

Selecionamos as principais extensões do Chrome para desenvolvedores Web Existem...

Editar React Direto: Guia Definitivo do React Grab

React Grab começou como uma ferramenta para copiar contexto...

Code Llama: Guia Definitivo para Programação

A Meta lançou uma nova ferramenta com inteligência artificial...

Claude Sonnet 4.5: Tudo Sobre a Nova IA da Anthropic

A Anthropic acaba de lançar o Claude Sonnet 4.5,...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Recursos da Comunidade

Carreira Internacional

JOB NA GRINGA

Meta de Salário Remoto
U$ 5.000/mês

O mapa completo para programadores do Brasil conquistarem contratos internacionais e mudarem de vida financeira.

  • Vagas exclusivas semanais: Membros acessam vagas com 7 dias de antecedência.
  • Workshops e lives gravadas: Buscar vagas não é óbvio. Nós te mostraremos como.
  • 498 Portais de vagas: Que contratam Brasileiros direto na sua dashboard.
  • Mentorias com Recrutadores: Encontros semanais ao vivo com Erika Linares.
  • Inglês diário com foco em conversação: Treine para entrevistas num ambiente sem julgamentos.
  • Suporte pós-contratação: Contabilidade e recebimento legal com a menor taxa.
Garantir Minha Vaga

Inscrição segura via Hotmart

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.