Ir para conteúdo
Fórum Script Brasil
  • 0

MYSQL - QUERY com IN LIST


Geminy

Pergunta

Olá!

Gente - estou tendo um problema tosco - mas não estou conseguindo sair dele. É o seguinte:

1 - eu faço um query usando, p.ex:

SELECT x.qid, x.titulo FROM x_tesouros

WHERE x_tesouros.qid IN ('5','2','8','12','18','14','31','76','35','37','42','43','48','49','56','55','61','58','62','65')

2 - o meu problema é - quando o MYSQL retorna - devolve na seguinte ORDEM:

2

5

8

12

14

18

31

35

37

42

43

48

49

55

56

58

61

62

65

76

3 - e não é, definitivamente, o que eu quero. preciso manter a ordem de saida igual a ordem de consulta!!!

Alguém poderia me ajudar?

Obrigado.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Geminy'

Desculpe a demora na resposta. Só hoje tive tempo de buscar uma solução para seu problema.

A solução passa por uma tabela temporária em memória. Esta tabela deve ser criada sem índice primário para não "estragar" a ordenação que você precisa.

O código fica assim:

create temporary table aux(id int unsigned)engine=memory;

insert into aux(id) 
values (5),(2),(8),(12),(18),(14),(31),(76),(35),(37),(42),(43),(48),(49),(56),(55),(61),(58),(62),(65);

select straight_join a.id, x.titulo from aux a
inner join x_tesouros x on x.x.qid = a.id;

drop table aux;

Não esqueça de execurar a última linha (drop table) somente após você terminar de usar o select. Isto fará a liberação da memória, da área ocupada pela tabela temporária.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...