Sorteirung mit WHERE .. IN (...)

Sorteirung mit WHERE .. IN (...)

am 14.04.2006 18:04:39 von sk

Hi,

Ich habe n Datensätze mit z.B int id,char txt
id ist PK.

jetzt möchte ich:
SELECT txt FROM superwichtig WHERE id IN (2000,5,10000,3,9)

nur soll das Ergebnis in der Reihenfolge
2000,5,10000,3,9 sein. Also genau wie beim IN Parameter.

z.Z. mach ich 5 mal SELECT ... WHERE id=liste

Jemand eine Idee wie das performanter mit Mysql 5.0 geht?

Danke Jörg

Re: Sorteirung mit WHERE .. IN (...)

am 14.04.2006 18:35:53 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Sorteirung mit WHERE .. IN (...)

am 14.04.2006 18:47:38 von Thomas Rachel

Jörg Singendonk wrote:

> jetzt möchte ich:
> SELECT txt FROM superwichtig WHERE id IN (2000,5,10000,3,9)

ganz spontan - allerdings 4.x:

CREATE TEMPORARY TABLE sort (lfd int auto_increment primary key, id int
unique);
Insert into sort (id) values (2000),(5),(10000),(3),(9);
select ... from superwichtig JOIN sort using (id) order by lfd;

> Jemand eine Idee wie das performanter mit Mysql 5.0 geht?

In 5.0 könnte es mit Stored Procedures gehen, aber damit kenne ich mich
nicht aus.


Thomas
--
"If you're killed in the Matrix, you die here?"
"The body cannot live without the mind."
Neo and Morpheus, "The Matrix"

Re: Sorteirung mit WHERE .. IN (...)

am 18.04.2006 19:52:14 von jochen-usenet

* you wrote:
>
> jetzt möchte ich:
> SELECT txt FROM superwichtig WHERE id IN (2000,5,10000,3,9)
>
> nur soll das Ergebnis in der Reihenfolge
> 2000,5,10000,3,9 sein. Also genau wie beim IN Parameter.
>
> z.Z. mach ich 5 mal SELECT ... WHERE id=liste
>
> Jemand eine Idee wie das performanter mit Mysql 5.0 geht?

SELECT txt FROM superwichtig WHERE id IN (2000,5,10000,3,9)
ORDER BY FIELD(id, 2000, 5, 10000, 3, 9)

jochen