4

だから私はこのテーブルを得ました:

+----+---------------------+-----+---------------- +
| | ID | いつ | オフ | (その他..もの) |
+----+---------------------+-----+---------------- +
| | 1 | 2012-09-17 17:00:00 | 0 | 何か1 |
| | 2 | 2012-09-17 18:00:00 | 0 | 何か2 |
| | 3 | 2012-08-31 21:00:00 | 1 | ブラブラ321 |
| | 4 | 2012-08-31 18:30:00 | 1 | blab32121 |
+----+---------------------+-----+---------------- +

すべてのキーを選択したいのですが:

  • off = 0 のキーは、ASC の順序で並べ替え、最初に表示する必要があります。
  • off = 1 のキーは、DESC の場合に並べ替え、その後 (最後) に表示する必要があります。

私はこのようなことを試しました:

(SELECT * FROM `table` WHERE `off` = 0 ORDER BY `when` ASC)
UNION
(SELECT * FROM `table` WHERE `off` = 1 ORDER BY `when` DESC)

しかし、うまくいきません。

また、チェックしてください: http://i.imgur.com/81Hzq.jpg

4

3 に答える 3

2

これを試して:

(SELECT * FROM table WHERE off = 0 ORDER BY `when` ASC) 
UNION 
(SELECT * FROM table WHERE off = 1 ORDER BY `when` DESC);

WHEN はキーワードであり、引用する必要があると思います。

于 2012-09-17T15:21:24.203 に答える
1
select *
from `table`
order by `off`,
    case `off`
        when 0 then timestampdiff(second, current_timestamp, `when`)
        when 1 then timestampdiff(second, `when`, current_timestamp)
    end
于 2012-09-17T22:22:26.233 に答える
1
SELECT * 
FROM table 
ORDER BY CASE WHEN off = 0 THEN `when` END ASC,
         CASE WHEN off = 1 THEN `when` END DESC 
于 2012-09-17T15:21:02.583 に答える