2011-07-06 18 views
0

私はSQLiteデータベースの2つの列の合計をチェックするクエリを実行したいですか?SQLiteでの追加WHERE

私はこれを試してみました、それは大丈夫実行しますが、何も見つけられません:

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

+2

そして、あなたはmy_value' 'より大きいに任意の行' col1'と 'col2'合計を_have_のですか? – paxdiablo

答えて

3

実際にこの条件を満たす行があることを確認する必要があります。

これは、のようなクエリを実行できます。

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

と最後の行を調べます。

+1

ありがとうございました。私の問題は、Androidがquerysを処理する方法にあったようです。 Androidのクエリビルダーは、通常の整数列で処理できる文字列としてすべてのパラメータを追加しましたが、2つの列を追加すると文字列と比較できなくなりました。 –

+0

さらに、coalesce()を使用して、両方の列がヌルでないことを確認してください。 –

1

あなたの構文が正しい(Iは、AndroidでSQLite3のDBを使用しています)を、念そこには何かがあります。診断のために、

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は:また別の列に2列の合計を比較するときに動作するように表示されます。

(私は個人的に括弧をやめるべきだが)有効な構文が完全だ
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; 
関連する問題