Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

willwalker

WHERE IN com ids duplicados

Recommended Posts

Simplesmente quero fazer um select aonde eu coloque a ordem dos ids e eles me trazer os valores, mesmo contendo ids duplicado.

 

SELECT nome FROM tabela WHERE id IN(2,4,8,2,7,4)

 

Mais ou menos isso.

 

Só que ao fazer assim ele me retorna uma vez somente cada id, mesmo colocando para ele me trazer de novo o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O único jeito é faz um select para cada id usando UNION para unir as querys, pois se existe um único id, não há como duplicá-lo no banco...

 

Armazena os ids num vetor (exemplo em PHP):

$ids = array(2,4,8,2,7,4);

Armezena as informações em outro vetor (também exemplo em PHP):

$sql = "SELECT nome FROM tabela WHERE id IN(2,4,8,2,7,4)";
$query = mysql_query($sql);
while ( $result = mysql_fetch_assoc($query) ) {
  $info[ $result['id'] ] = $result;
}

E printa dessa forma (PHP):

foreach ( $ids as $id => $valores ) {
  echo "<p>Informações do id $id: <pre>" , print_r($valores,1) , "</pre></p>";
}

Não sei se a maneira que eu fiz é a mais aconselhável...

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT nome FROM tabela WHERE id IN(2)

Union all

SELECT nome FROM tabela WHERE id IN(4)

...

 

IN vai trazer somentevuma vez, para trazer mais de um , via sql, só me ocorre por UNION.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.