作者andreli (小狗跟正妹是我的死穴)
看板Database
標題[MySQL] 資料排序問題
時間Fri Sep 25 15:54:40 2009
最近遇到一些問題, 我是使用PHP+MySQL來開發網站,
目前有一個資料表:
ID NAME DATE
1 A 2009-01-01
2 B 2008-01-01
3 C 2007-01-01
4 D
5 E
6 F
如同上述所示, 有些人的DATE欄位中沒有值, 有些人的有, ID是唯一流水號,
最後排序出來的結果需要是
A C B D E F
重點就在把DATE取出來當作第一筆, 接著使用DATE ASC來排序, DATE沒有值的放最後,
目前我的解決辦法是使用PHP來幫忙解決,
先寫出取出DATE最新的A出來, 然後放個變數記住A的ID, 遇到ID == A時就不顯示A,
後面的就依序使用DATE ASC來顯示出來。
說了一大串, 我的問題是:
1. 遇到這種問題只能靠PHP這些來處理嗎?
還是可以使用SQL一次就解決了...
2. 還有我如何先DATE ASC那些有值的NAME, DATE為null的放在最後呢?
感謝各位前輩耐心的觀看, 希望可以學到不一樣的方法,
謝謝大家!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.92.77.187
→ andreli:自己po先回答使用case when... 09/25 15:57
→ adrianshum:為什麼不是 CBADEF? 09/25 16:09
→ andreli:因為想要先取出一筆最新的放在最前面= =a 09/25 16:13
→ rushcat:可以先把最後你想看到的樣子列出來嗎...看不太懂... 09/25 16:20
→ andreli:就是A C B D E F這樣子, A是因為是DATE最新的排在第一個 09/25 16:23
→ rushcat:這樣不就ORDER BY Date DESC, Name ASC...!? 09/25 16:27
→ adrianshum:你沒有說最新date 排第一個... 分三段 union 起來吧.. 09/25 16:31
→ andreli:謝謝! 我再試試看 09/25 16:57