Mysql SQL语法错误

Mysql SQL语法错误,mysql,sql,Mysql,Sql,我正在运行我的第一个SQL查询,不确定我的错误在哪里。日期的第一行似乎运行正确。其他行似乎都不起作用,即它返回的结果评级低于3.5。我运行查询时未收到错误消息,它已成功运行。如果可能的话,解释一下我缺少的“概念” 看起来这应该是一个简单的查询,它从一个表“app”中提取评级“下载”和“最新更新”都是列 SELECT * FROM app WHERE lastUpdate >= '2011-08-01' AND rating >= '3.5' AND downloads = '1

我正在运行我的第一个SQL查询,不确定我的错误在哪里。日期的第一行似乎运行正确。其他行似乎都不起作用,即它返回的结果评级低于3.5。我运行查询时未收到错误消息,它已成功运行。如果可能的话,解释一下我缺少的“概念”

看起来这应该是一个简单的查询,它从一个表“app”中提取评级“下载”和“最新更新”都是列

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'
试试这个

SELECT * FROM app
WHERE lastUpdate >= '2011-08-01' AND 
rating >= '3.5' AND 
(downloads IN ('1 - 5','10 - 50','50 - 100','100 - 500'))
我不确定您将字符串或值组合在一起的语法是否正确,如果是,您需要括号或其中任何一个或条件,则整个查询都将返回true。

试试这个

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

我不确定您将一个或多个值串在一起的语法是否正确,如果是,您需要括号或其中任何一个或条件,则整个查询都将返回true。

您不能将一个或多个值串在一起。请尝试以下替代版本:

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是一个varchar或text类型,包含像“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)

你不能像那样把他们连在一起。请尝试以下替代版本:

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是一个varchar或text类型,包含像“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)

SQL中的格式化通常将AND与下一条语句一起放在新行上。没有必要或任何事情,只是按照通常的方式。downloads='1-5'或downloads='10-50'或downloads='50-100'或downloads='100-500'=>您必须指定列again@KDEx约翰是对的。查看他的评论。当你说downloads='1-5'时,你的意思是你想要字段downloads字面上是'1-5'的行,还是你试图查询downloads值在1到5之间的行?@AshBurlaczenko,显然,根据我的说法。真的,我认为这是我看到这一切的唯一方式。我可能错了,或者只是找错了地方。SQL中的格式化通常会将AND与下一条语句一起放在新行上。没有必要或任何事情,只是按照通常的方式。downloads='1-5'或downloads='10-50'或downloads='50-100'或downloads='100-500'=>您必须指定列again@KDEx约翰是对的。查看他的评论。当你说downloads='1-5'时,你的意思是你想要字段downloads字面上是'1-5'的行,还是你试图查询downloads值在1到5之间的行?@AshBurlaczenko,显然,根据我的说法。真的,我认为这是我看到这一切的唯一方式。我可能错了,或者只是找错了地方。你也可以指出评级>='3.5'可能不是他们想要的3.5“可能需要转换为数字。您还可以指出评级>='3.5'可能不是他们想要的。”3.5“可能需要转换为数字。