为什么这个陈述不起作用? SQL

时间:2013-08-20 05:38:15

标签: sql sqlfire

我正在使用SQLFire。我正在做作业,当我开始作业时,我发现我无法返回特定的值。看到这个SQL Fiddle,它包含我在我的赋值中使用的表中的EXACT数据,它包含我尝试过的SQL语句。 FIDDLE:http://sqlfiddle.com/#!2/e761ac/1

我想要输出的是:

Rate | RentalCode
-----------------
350  |    WL

当我将代码输入SQL Fire时,我收到此错误。 Error Message

我被告知不要使用ORDER BY子句,而我还没有学过'LIMIT'

谢谢

3 个答案:

答案 0 :(得分:2)

您需要拥有GROUP BY子句,因为SELECT子句中有非聚合列

SELECT MIN(Rate), Rentalcode
FROM RentalRates 
GROUP BY Rentalcode

<强>更新

由于您希望获得最低费率,我认为这比使用ORDER BY - LIMIT更好,因为它支持多个速率最低的记录。

SELECT *
FROM RentalRates
WHERE rate = (SELECT MIN(rate) FROM rentalrates)

答案 1 :(得分:0)

目前尚不清楚您希望通过此查询获得什么。我想以下工作会有效:

SELECT Rate, Rentalcode
FROM RentalRates 
order by Rate 
LIMIT 1

SQLFiddle demo

答案 2 :(得分:0)

如您所见,即使在SQLfiddle中,您的结果也很奇怪 - 您从一个记录中获取RentalCode,从另一个记录中获取Rate。
从表中选择聚合而不进行分组是MySQL语法而不是ANSI。如果你想获得最低费率的记录,这是一个查询:

select * from RentalRates order by Rate limit 1

sql fiddle demo