mySQL -> ORDER BY

8 отговора 573 прегледа
#1

mySQL -> ORDER BY

Имам питане за една mySQL заявка.

Искам да подредя таблицата по поле, но така, че да сложи равните на N id-та най-отгоре. Демек да обединя тези две заявки в една:

select * from blabla where hid=6;
select * from blabla where hid (not(hid=6));

Така че да излязат първо записите, за които hid=6, а после всички останали.

Никоя армия не може да победи идея, чието време е дошло.
Отговор
в отговор на Dakota #2

Re: mySQL -> ORDER BY

При SQL е възможно следното обединение:

select * from blabla where hid=6
UNION
select * from blabla where hid<>6

но при него колоните трябва да са еквивалентни и неможеш да използваш ORDER BY!
При InterBase, не иска да покаже първо първата а после втората заявка, а ги сортира по реда на показаните колони, но опитай в MySql дали пък няма да стане

Отговор
в отговор на Dakota #3

Re: mySQL -&gt; ORDER BY

select
if(hid=6,1,2) as a,
hid
from
blabla
order by a,hid

bofh
Отговор
в отговор на Eмилиo #4

Re: mySQL -&gt; ORDER BY

MySQL поддържа UNION от 4.00 нататък
и то по описания от теб начин.
Винаги показва първо първата таблица после втората и т.н.

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на bofh #5

10x

Това работи. (Другото решение дава грешка)

Каква е идеята на (..,1,2)?

Никоя армия не може да победи идея, чието време е дошло.
Отговор
в отговор на Dakota #6

Re: 10x

ami za redovete v koito hid=6 stoinostta na kletkata v kolonata shte e 1, a za vsi4ki ostanali shte e 2. Order by podrezhda pyrvo po tazi kolona, a 1 e predi 2 ...

bofh
Отговор
в отговор на bofh #7

Re: mySQL -&gt; ORDER BY

ili naprawo

select
*
from
blabla
order by
hid=6 DESC

ViruS
Отговор
в отговор на ViruS #8

Re: mySQL -&gt; ORDER BY

С уточнението, че това ще сложи редовете с
id = 6 на първо място, но всички други ще бъдат в "произволен" ред

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор
в отговор на salle #9

Re: Бърза проверка...

...показа, че MySQL се справя със:

select ... order by id = 6 desc, id desc;

6
0
1
2

и ... id = 6 desc, id asc;

6
999
998
997

Linux is like a wigwam - No Windows, No Gates, Apache inside
Отговор