sql >> Database >  >> RDS >> Mysql

mysql bestellen bij Union lijkt niet te werken

Van MySQL documentatie :

Eigenlijk de enige keer dat een ORDER in een unie is handig als u LIMIT . gebruikt ook.

Dus als je vraag zo was:

(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 ...

Dan zou je de eerste tien records zien die zouden worden geretourneerd op basis van die volgorde, maar ze zouden niet noodzakelijkerwijs in volgorde worden weergegeven.

UPDATE:

Probeer dit -

(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. CURRENT_TIMESTAMP() Functie in Oracle

  2. Oracle - Welk TNS Names-bestand gebruik ik?

  3. Hoe maak je een PL/SQL zwakke ref-cursor in Oracle Database?

  4. Refactor een PL/pgSQL-functie om de uitvoer van verschillende SELECT-query's te retourneren