Re: [SQL ] SQLite 的 SELECT WHERE問題
※ 引述《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
討論串 (同標題文章)