2017-04-03 84 views
0

在MySQL中,我有這個表:mysql命令由多個領域

id updateTime writeTime 
------------------------------ 
1  null  2017-04-05 
2  null  2017-04-01 
3 2017-04-02 2017-04-02 
4 2017-04-02 2017-03-31 

我想這樣的結果:

id updateTime writeTime 
------------------------------ 
1  null  2017-04-05 
3 2017-04-02 2017-04-02 
4 2017-04-02 2017-03-31 
2  null  2017-04-01 ` 

但是當我使用ORDER BY updateTime, writeTime DESC,我通常會:

id updateTime writeTime 
------------------------------ 
3 2017-04-02 2017-04-02 
4 2017-04-02 2017-03-31 
1  null  2017-04-05 
2  null  2017-04-01 ` 
+1

什麼是理想的結果的排序邏輯? – David

+0

我會將'writeTime'的值複製到'updateTime'中,用於尚未更新的行。這樣你可以通過'updateTime'使用索引進行排序。 –

回答

1

如果我理解正確,您想按updateTime進行排序。如果它爲空,則按Writetime排序。在updateTime相同的情況下,按writeTime排序。

您可以使用聚結這樣的:

select * 
from your_table 
order by coalesce(updateTime, writeTime) desc, writeTime desc; 
0

我想你想的最大日下令:

select 
    * 
from your_table 
order by coalesce(GREATEST(updateTime, writeTime),updateTime, writeTime) desc;