0

mysql でユニオン ステートメントを使用していますが、結果の並べ替えに問題があります。ORDER ステートメントはまったく機能しません。結果は常に id フィールドでソートされます。

クエリの例を次に示します。

SELECT a.* FROM ( ( select * from ticket_ticket AS t1 WHERE ticket_active=1 ORDER BY t1.ticket_date_last_modified DESC ) 
UNION ( select * from ticket_ticket AS t2 WHERE ticket_active=0 ORDER BY t2.ticket_date_last_modified DESC, t2.ticket_status_id DESC ) )
AS a LIMIT 0,20;

最初の SELECT の結果を last_modified 時刻で並べ替え、2 番目の SELECT の結果を時刻とステータスで並べ替えたいと思います。しかし、ORDER ステートメントはスキップされます。結果は常に ticket_id ( PRIMARY KEY ) の順序で表示されます。このクエリの何が問題になっていますか?

ありがとう!

4

2 に答える 2

2

わかりました、私はこのようにクエリを書くことを修正しました:

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;
于 2013-07-25T10:29:52.677 に答える