"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com registros com vários valores em uma cláusula WHERE IN() do MySQL?

Como lidar com registros com vários valores em uma cláusula WHERE IN() do MySQL?

Publicado em 23/12/2024
Navegar:108

How to Handle Records with Multiple Values in a MySQL WHERE IN() Clause?

Operador MySQL IN ()

Ao consultar um banco de dados MySQL, o operador WHERE IN () é frequentemente usado para recuperar linhas com base em dados específicos valores em uma coluna. Por exemplo, a consulta a seguir recupera todas as linhas da tabela "table" onde a coluna "id" corresponde a qualquer um dos valores (1, 2, 3, 4):

SELECT * FROM table WHERE id IN (1,2,3,4);

No entanto, surge um problema quando um registro tem vários valores de "id", como 1 e 3. Nesses casos, a consulta pode não retornar essa linha.

Solução

A consulta se traduz nas seguintes condições OR:

SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';

Portanto, ele retornará apenas linhas que correspondam a qualquer um desses condições.

Para resolver isso, uma opção é usar o tipo de dados SET para a coluna "id". Isso permite armazenar vários valores usando strings separadas por vírgula. Você pode então usar a função FIND_IN_SET() para procurar valores específicos:

SELECT * FROM table WHERE FIND_IN_SET('1', id);

Esta consulta retornará todas as linhas que possuem '1' como um dos valores na coluna "id", independentemente de quaisquer outros valores que possam estar presentes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3