作者kiii210 (Johnny.T)
看板Database
標題Re: [SQL ] SQLite 的 SELECT WHERE問題
時間Tue Jun 19 20:48:55 2012
※ 引述《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)
1F:→ j100002ben:先把資料表的結構放出來吧,這樣比較好處理問題.. 06/19 21:26
2F:→ kiii210:抱歉這麼晚才回..感謝大大..我已經找到解決方式了.. 06/22 17:21
3F:→ kiii210:不過不是從資料庫下手..還是感謝您的幫忙!!!感恩 06/22 17:21