1

初めて SQL クエリを実行していますが、どこにエラーがあるのか​​わかりません。最初の行 (日付) は正しく実行されているようです。他の行はどれも機能していないようです。つまり、評価が 3.5 未満の結果が返されます。クエリを実行してもエラー メッセージは表示されず、正常に実行されます。可能であれば、私が見逃している「概念」を説明してください。

これは単純なクエリである必要があるようです。1 つのテーブル「app」からプルします。'rating' 'downloads' と 'lastUpdate' はすべて列です。

SELECT * FROM app
WHERE lastUpdate >= '2011-08-01' AND 
rating >= '3.5' AND 
downloads = '1 - 5' OR '10 - 50' OR '50 - 100' OR '100 - 500'
4

3 に答える 3

4

これを試して

SELECT * FROM app
WHERE lastUpdate >= '2011-08-01' AND 
rating >= '3.5' AND 
(downloads IN ('1 - 5','10 - 50','50 - 100','100 - 500'))

文字列または値を一緒にする構文が正しいかどうかはわかりません。括弧が必要な場合、またはそれらまたは条件のいずれかがクエリ全体で true を返します。

于 2012-04-23T20:57:19.623 に答える
3

そのような OR をつなぎ合わせることはできません。この代替バージョンを試してください:

SELECT * FROM app
WHERE lastUpdate >= '2011-08-01' AND 
rating >= '3.5' AND 

(downloads = '1 - 5' OR 
 downloads ='10 - 50' OR
 downloads ='50 - 100' OR 
 downloads ='100 - 500')

次のように IN 句を使用して、この構文を少し短縮できます。

   downloads IN('1-5','10-50','90-100','100-500')

これは、downloads が '1-5' のような値を含む varchar またはテキスト型であり、数値ではなく、これが 1,2,3,4,5 を返すことを期待していることを前提としています。

後者を意味する場合は、これらのパラメーターを次のように指定する必要があります

(downloads between 1 and 5 OR 
 downloads between 10 and 50 OR
 downloads between 50 and 100 OR 
 downloads between 100 and 500)
于 2012-04-23T20:57:21.077 に答える
0
SELECT * FROM app
WHERE lastUpdate >= '2011-08-01' AND 
rating >= '3.5' AND 
(downloads between 1 AND 5 OR downloads between 10 AND 50 OR downloads between 50 AND 100 OR downloads between 100 AND 500)
于 2012-04-23T20:58:27.900 に答える