作者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