我正在运行我的第一个SQL查询,不知道我的错误在哪里。第一行(日期)似乎正确运行。没有其他线似乎工作IE它返回评级小于3.5的结果。我运行查询时没有收到错误消息,它运行成功。如果可能的话,解释一下我所缺少的“概念”。
看起来这应该是一个简单的查询,它来自一个表'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'
答案 0 :(得分: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。
答案 1 :(得分: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')
这假设下载是包含诸如“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)
答案 2 :(得分: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)