我想要做一個查詢,我檢查我的SQLite
數據庫中的兩列的總和是否有可能?在SQLite中的添加WHERE
我試圖與這一點,它執行好了,但沒有找到任何東西:
SELECT * FROM my_table WHERE (col1 + col2) > my_value.
(我使用的是Android中的sqlite3的DB)
我想要做一個查詢,我檢查我的SQLite
數據庫中的兩列的總和是否有可能?在SQLite中的添加WHERE
我試圖與這一點,它執行好了,但沒有找到任何東西:
SELECT * FROM my_table WHERE (col1 + col2) > my_value.
(我使用的是Android中的sqlite3的DB)
這是完全有效的語法(雖然我個人離開關括號)。
你應該檢查你是否有滿足這種條件的行。
select col1 + col2 as xx from my_table order by xx asc
和檢查的最後一排:
這可以用類似的查詢來完成。
謝謝大家,看來我的問題是Android處理querys的方式。 Android的查詢構建器將所有參數作爲字符串添加到查詢中,即普通整數列可以處理的字符串,但將兩列一起添加時,無法再與字符串進行比較。 –
此外,請確保兩列不爲空,使用coalesce() –
你的語法是正確的,只要確定那裏有東西。對於診斷,從
SELECT col1, col2, (col1+col2) AS thesum, my_value FROM my_table
並自己做比較。通常你會發現col1或col2是NULL,因此無法工作。
我在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
這可能是你的數據格式錯誤,因爲SQLITE非常(也可能是)對類型錯誤的原諒。
你看到了什麼,當你運行:
SELECT col1, col2 , col1 + col2 FROM my_table;
那你_have_任何行,其中'col1'和'col2'總和比'my_value'更大? – paxdiablo