Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Valores de ligação PDO para a instrução MySQL IN


Esta é a mesma coisa que foi perguntada nesta pergunta:Posso vincular um array a uma condição IN()?

A resposta foi que, para uma lista de tamanho variável no in cláusula, você mesmo precisará construir a consulta.

No entanto, você pode usar a lista entre aspas e separada por vírgulas usando find_in_set , embora para grandes conjuntos de dados, isso teria um impacto considerável no desempenho, pois cada valor na tabela deve ser convertido em um tipo char.

Por exemplo:
select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)

Ou, como terceira opção, você pode criar uma função definida pelo usuário que divide a lista separada por vírgulas para você (cf. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Esta é provavelmente a melhor opção das três, especialmente se você tiver muitas consultas que dependem de in(...) cláusulas.