1

我正在运行我的第一个 SQL 查询,但不确定我的错误在哪里。第一行(日期)似乎运行正确。其他行似乎都没有工作 IE 它返回的结果评分低于 3.5。运行查询时没有收到错误消息,它运行成功。如果可能的话,解释一下我所缺少的“概念”。

看起来这应该是一个简单的查询,它从一个表“应用程序”中提取。'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')

这假定下载是一个 varchar 或文本类型,其中包含诸如“1-5”之类的值,并且它不是数字,并且您期望它返回 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 回答