Originariamente inviato da optime
togli gli OrderBy interni e mettine uno solo sulla query esterna
Il punto è che io ho usato la union per ordinare le due query in modi diversi! Se potevo mettere l'order esterno facevo semplicemente un order by active!

Comunque dopo un po di smadonnamenti ho risolto così

codice:
SELECT a.*
FROM
 (SELECT *
  FROM ticket_ticket
 WHERE ticket_active=1
 ORDER BY ticket_date_last_modified DESC) AS a
UNION ALL
SELECT b.*
FROM
(SELECT *
 FROM ticket_ticket
 WHERE ticket_active=0
 ORDER BY ticket_date_last_modified DESC, ticket_status_id DESC) AS b LIMIT 0, 20;