Multiplos operadores OR em uma cláusula WHERE na consulta SQL

By on

Me deparei com uma necessidade recentemente, que embora parecesse tão óbvia, eu nunca tinha precisado fazer.

Aninhar uma consulta com vários operadores OR seguido de um operador AND no final, foi onde descobri sem querer, na verdade, nem sei onde tem isto na documentação do MySQL, por exemplo:

Se executar a consulta:

 lang="sql

SELECT * FROM tabela

WHERE

    campo1 = 'valor1'

OR

   campo1 = 'valor2'

OR

   campo1 = 'valor3'

AND

   campo2 = '0'

O resultado não vai ser o desejado, porque os operadores OR, vão anular o efeito do operador AND, então como resolver isto?

Bom, ai apareceu a mágica que descobri sozinho, colocar a parte dos operadores OR dentro de parenteses:

 lang="sql

SELECT * FROM tabela

WHERE

(

       campo1 = 'valor1'

   OR

       campo1 = 'valor2'

   OR

       campo1 = 'valor3'

)

AND

   campo2 = '0'

Agora sim, a consulta vai verificar os operadores OR e incluir o operador AND!

Feedback

5 thoughts on “Multiplos operadores OR em uma cláusula WHERE na consulta SQL

  1. Muito bom, valeu cara.

  2. Valeu a mão, detalhe básico, mas ajudou! =D

  3. Cara, vale mesmo. Ajudou muito. 🙂

  4. Amigo ajudou de mais,como diz o ditado: “Detalhes faze a diferença”. Deus te abençoe.

  5. Amigo ajudou de mais,como diz o ditado: “Detalhes faz a diferença”. Deus te abençoe.

Leave a Reply