sql >> Databasteknik >  >> RDS >> Mysql

mysql order by with union verkar inte fungera

Från MySQL dokumentation :

I princip den enda gången en ORDER i ett förbund kommer att vara användbart om du använder LIMIT likaså.

Så om du frågade var så här:

(SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") ORDER BY `ups` DESC,`downs` ASC LIMIT 10)
UNION ...

Då skulle du se de första tio posterna som skulle returneras baserat på den ordningen, men de skulle inte nödvändigtvis visas i ordning.

UPPDATERING:

Prova detta -

(SELECT *, 1 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") )
UNION
(SELECT *, 2 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only%" OR `joke` LIKE "%only%") )
UNION
(SELECT *, 3 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%three%" OR `joke` LIKE "%three%") )
UNION
(SELECT *, 4 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%doors%" OR `joke` LIKE "%doors%"))
 ORDER BY `ob`, `ups` DESC,`downs` ASC LIMIT 0, 30


  1. php-varning mysql_fetch_assoc

  2. Hantering av samtidiga uppdateringar i viloläge

  3. Anslut till MySQL-datakällan i PHPStorm

  4. Lär dig hur du använder SQL Server Management Studio