看板 Database 關於我們 聯絡資訊
※ 引述《ylk (YLK)》之銘言: : ※ 引述《NightPrince (shooting star)》之銘言: : : ※ 引述《ylk (YLK)》之銘言: : : : id used time : : : --------- ------- -------- : : : A 5 13:30 : : : B 5 13:00 : : : C 4 14:00 : : : D 1 12:00 : : : E 0 11:00 : : : 各位前輩好,想請教一下一個SQL問題。 : : : 需求:找到 time 時間最早的資料,不過,如果 used 有 > 0 的,要優先選擇。 : : : 以上列資料表來看,我要選擇的是 資料D。 : : : 想了很久,還是想不出來這個 SQL 要怎麼下,請問有人能幫忙提醒一下嗎? : : : 謝謝! : : select * from table where used > 0 order by time asc limit 1; : 謝謝您的回應。是我沒說明清楚,抱歉。 : 如果 used 有 > 0 的資料,要優先選擇,反之,若沒有 > 0 ,則抓出 = 0 的資料。 : 這一直是我很困惑的部分。 : 再次謝謝您。 關鍵是把{0,{1,2,3,4,5,...}}轉換成{0,1} SELECT CAST(used AS bit) AS x, MIN([time]) AS t FROM table GROUP BY CAST(used AS bit) ORDER BY x DESC 結果: x t 1 下午 12:00:00 0 上午 11:00:00 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.184.46
PsMonkey:囧> 感覺很帥的一招... 不過感覺有點危險... 06/26 21:23