Re: [SQL ] SQLite 的 SELECT WHERE問題

看板Database作者 (Johnny.T)時間13年前 (2012/06/19 20:48), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《kiii210 (Johnny.T)》之銘言: : 大家好,小弟的手機APP目前是用SQLite3當作資料儲存的工具 : 最近遇到一些SELECT的問題..想請問一下各位 : 假設有"days"欄位儲存數字 : 假設有 -3 , -2 , -1 , 0 , 1 , 2 , 3 六筆資料 : 現在我想如此排序:0、1、2、3、-1、-2、-3 : 但是用ORDER BY DESC/ASC都排不出我想要的 : 所以我想說能不能先把大於0的取出來,再進行排序 : SELECT * FROM database WHERE days > 0 ORDER BY DESC : 然後再把小於0的取出來,再排序一次,如此就能達到我的需求 : 但是我試過了‥上面那行有成功把大於0的取出來進行排序, : 但當我想要取小於0的再進行排序就不行了,我試過再後面加 AND days < 0 : 這樣會CRASH...還有OR days < 0..這樣全部都會取出來.. : 不知道有沒有高手可以指點一下!?感恩!! 我用CASE WHEN的確成功了..但卻有很大的問題 請見CODE:http://paste.plurk.com/show/1152816/ 第一個是如果b欄位沒有先用ABS轉成絕對值,會CRASH,不知道為什麼 第二個才是最大的問題..,相信大大有發現不管大於0或是小於0,a欄位b欄位值都會是Day 本身的值,所以這樣就沒意義了 = =" 會這樣寫的原因是因為,我以為執行起來會像這樣 int a = 0; int b = 0; if ( Day >= 0 ) { a += 1; } else { b += 1; } 兩者輸出的結果會是分開的..互不相關..但SQL好像不是我想的那樣T_T 我有想到一個方法,只用一個欄位a,如果大於等於0就等於1,小於0就等於-1 這樣的話我就可以進行排序.. 但是重點在沒辦法按照"大小"來排序了..因為這樣只會判斷是大於或小於0... 輸出的值只有1或-1... 感覺好像沒辦法用SQL指令來解決Q_Q..有大大還有其他方法嗎.. 感恩.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.76.170 ※ 編輯: kiii210 來自: 111.248.76.170 (06/19 20:50)

06/19 21:26, , 1F
先把資料表的結構放出來吧,這樣比較好處理問題..
06/19 21:26, 1F

06/22 17:21, , 2F
抱歉這麼晚才回..感謝大大..我已經找到解決方式了..
06/22 17:21, 2F

06/22 17:21, , 3F
不過不是從資料庫下手..還是感謝您的幫忙!!!感恩
06/22 17:21, 3F
文章代碼(AID): #1Fu7KwrZ (Database)
文章代碼(AID): #1Fu7KwrZ (Database)