0

表の例:

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などで試しましたが、成功しませんでした。

4

3 に答える 3

3

これを試してください。

  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

優先度を忘れた編集

于 2013-03-05T23:23:23.037 に答える
2

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 で機能するかどうかはわかりません。

編集:クエリを修正しました(うまくいけば...)

于 2013-03-05T23:31:07.430 に答える