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

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!

Como Carregar Arquivo .SQL para o MySQL

Já pensou ter que digitar intermináveis linhas no terminal do mysql para criar, atualizar, excluir, gerenciar ou inserir dados no MySQL?

Então, isto é uma situação que às vezes chega a ser desconfortante.

Entretanto, não precisa sofrer não.

Faça o que você tem que fazer no seu editor de textos preferido (Bloco de Notas, Notepad++, Gedit, Kedit, etc…) , salve este arquivo e carregue diretamente dentro do MySQL.

Leia mais