2017-02-27 6 views
1

2カラムで検索結果を注文する際の問題。MySQL ORDER BY 2カラム例外

マイ表:予定が最後にNULL IS

1.:通過時間を秒単位で保存されていることで、予定が、私はレコードを注文することを選択をしたい時

id transit_time appointment 
---------------------------- 
2 3845   09:00:00 
11 22053  13:00:00 
10 4852   08:00:00 
11 5985   NULL 
13 7221   12:45:00 
14 3812   NULL 
17 4256   NULL 
18 5663   NULL 
19 4725   NULL 

です予定の時間ASCによって

2.

3.通過時間が約束よりも大きい場合は、そのレコードが正しい順序であるべき例えばポイント2

で仕分けの上にする必要があります:私はCASEとの多くの種類を試してみた

id transit_time appointment 
---------------------------- 
11 22053  13:00:00 
13 10221  12:45:00 
10 3852   08:00:00 
2 4245   09:00:00 
11 5985   NULL 
18 5663   NULL 
19 4725   NULL 
17 4256   NULL 
14 3812   NULL 

しかし、その秩序を得る運がない。どんな助けもありがとう。

SELECT * FROM table WHERE ... 
ORDER BY (CASE WHEN appointment IS NULL THEN 1 ELSE 0 END) asc, 
transit_time desc 
+0

あなたの望ましい結果は、サンプルデータと一致いけない比較を行うために秒に変換します。あなたは10221または3852のtransit_timeを持っていますが、どこから来るのか理解できません。sqlfiddleデータでは、すべての予定がsecondに変換されています - transit_timeはtransit_timeより大きい値を返します – Mihai

答えて

0

ORDER BY CASE WHEN time_appointment IS NULL THEN 1 ELSE 0 END , 
transit_time DESC, 
CASE WHEN transit_time > TIME_TO_SEC(time_appointment) THEN transit_time ELSE NULL END 
+0

あなたの答えは間違いです。通過時間を一番上に置くが、任命は最大の時間からより短い時間になる。 –

+0

@AdrianP。私はそれをテストすることができるようにsqlのフィドルにサンプルデータを入れてください。 – Mihai

+0

http://sqlfiddle.com/#!9/662af/3ありがとう –