表の例:
NAME, PRIORITY, SORT
TEST1, 0, 11:10
TEST2, 1, 11:15
TEST3, 0, 11:20
TEST4, 1, 11:30
次の優先リストを注文して作成したいと思いますpriority
。
TEST2 (first submitted with priority)
TEST1
TEST3
TEST4
どうやってするか?GROUP BYなどで試しましたが、成功しませんでした。
これを試してください。
SELECT NAME
FROM table
WHERE PRIORITY = 1
ORDER BY TIME ASC
LIMIT 1
UNION
SELECT NAME
FROM table
ORDER BY TIME ASC
それは与えるべきだった
TEST2 (first submitted with priority) TEST1 TEST3 TEST4
優先度を忘れた編集
http://blog.sqlauthority.com/2012/10/30/sql-server-union-all-and-order-by-how-to-order-table-separately-while-using-union-all/によるとユニオンの反対側に 2 つの別々のオーダーを持つことはできません。ただし、新しい列を追加して、その列で並べ替えることができます。
ウェブサイトは次のようなものを提案しています(これはSQLサーバー用ですが、mysqlが同じ構文を使用しているかどうかはわかりません)
Select name, priority, sort, '1' OrderKey from table where priority = 1 and sort <= (select min(t3.sort) from table t3 where t3.priority = 1)
union
select name, priority, sort, '2' OrderKey from table
order by OrderKey, time asc
繰り返しますが、これは sql サーバーでは機能しますが、mysql で機能するかどうかはわかりません。
編集:クエリを修正しました(うまくいけば...)