Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie zapytania z WHERE IN
Forum PHP.pl > Forum > Bazy danych > MySQL
quality
Witam
Mam takie zapytanie :

SELECT * FROM `jos_content` WHERE id IN ( 7616, 1168, 992, 2047, 41 ) ;

Mysql sortuje mi to automatycznie od najnizszego id.

Jak zrobic zeby rekordy byly w takiej kolejnosci jak podane po kolei w IN ?
nospor
nie da sie tego od tak zrobic. musisz napisac wlasną regulke na sortowanie:
http://nospor.pl/mysql-faq-n25.html#faq-5
quality
Hmm to chyba nie rozwiazuje mojego problemu.

No bo niby jak napisac wlasne sortowanie tym sposobem ?
SELECT *, CASE pole
WHEN 2 THEN 1
WHEN 4 THEN 2
WHEN 3 THEN 3
WHEN 1 THEN 4
ELSE NULL
END as sortowanie
FROM tabela
ORDER BY sortowanie

ja nie mam zadnych danych do sortowania jedynie co mam to wartosci id ewentualnie po rozbiciu tablice posortowana
array(0=>7616,1=> 1168,2=> 992,3=> 2047,4=> 41).

Ale nie wiem jak to ugryzc, nei mam pola do ktorego moglbym porownac.
nospor
no to wlasnie tym polem jest twoje id. PRzeciez ja tam pisalem ogólnie....
quality
No faktycznie fajnie poszlo, ciekawa sprawa smile.gif Pozdrawiam
nevt
można też prościej, z samą listą, bez CASE:
  1. SELECT *, FIELD(`id`, 7616, 1168, 992, 2047, 41) AS `pos` FROM `jos_content` HAVING `pos` > 0 ORDER BY `pos`;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.