2011-07-06 52 views
0

我想要做一個查詢,我檢查我的SQLite數據庫中的兩列的總和是否有可能?在SQLite中的添加WHERE

我試圖與這一點,它執行好了,但沒有找到任何東西:

SELECT * FROM my_table WHERE (col1 + col2) > my_value. 

(我使用的是Android中的sqlite3的DB)

+2

那你_have_任何行,其中'col1'和'col2'總和比'my_value'更大? – paxdiablo

回答

3

這是完全有效的語法(雖然我個人離開關括號)。

你應該檢查你是否有滿足這種條件的行。

select col1 + col2 as xx from my_table order by xx asc 

和檢查的最後一排:

這可以用類似的查詢來完成。

+1

謝謝大家,看來我的問題是Android處理querys的方式。 Android的查詢構建器將所有參數作爲字符串添加到查詢中,即普通整數列可以處理的字符串,但將兩列一起添加時,無法再與字符串進行比較。 –

+0

此外,請確保兩列不爲空,使用coalesce() –

1

你的語法是正確的,只要確定那裏有東西。對於診斷,從

SELECT col1, col2, (col1+col2) AS thesum, my_value FROM my_table 

並自己做比較。通常你會發現col1​​或col2是NULL,因此無法工作。

3

我在SQLite版本3.7.7.1,它似乎對我工作正常。

sqlite> create table blah (x int, y int) 
    ...> ; 
sqlite> insert into blah values (1,1); 
sqlite> insert into blah values (5,8); 
sqlite> insert into blah values (0,-1); 
sqlite> select * from blah where x+y>1; 
1|1 
5|8 
sqlite> select * from blah where x+y>2; 
5|8 
sqlite> 

你能給我更多關於你正在使用的數據的信息嗎?

ETA:它也出現兩列的和比較的另一列時的工作:

sqlite> create table blurg (x int, y int, z int); 
sqlite> insert into blurg values (2,3,1); 
sqlite> insert into blurg values (1,1,3); 
sqlite> select * from blurg where x+y>z; 
2|3|1 
1

這可能是你的數據格式錯誤,因爲SQLITE非常(也可能是)對類型錯誤的原諒。

你看到了什麼,當你運行:

SELECT col1, col2 , col1 + col2 FROM my_table;