我正在使用SQLFire。我正在做作业,当我开始作业时,我发现我无法返回特定的值。看到这个SQL Fiddle,它包含我在我的赋值中使用的表中的EXACT数据,它包含我尝试过的SQL语句。 FIDDLE:http://sqlfiddle.com/#!2/e761ac/1
我想要输出的是:
Rate | RentalCode
-----------------
350 | WL
当我将代码输入SQL Fire时,我收到此错误。
我被告知不要使用ORDER BY子句,而我还没有学过'LIMIT'
谢谢
答案 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
答案 2 :(得分:0)
如您所见,即使在SQLfiddle中,您的结果也很奇怪 - 您从一个记录中获取RentalCode,从另一个记录中获取Rate。
从表中选择聚合而不进行分组是MySQL语法而不是ANSI。如果你想获得最低费率的记录,这是一个查询:
select * from RentalRates order by Rate limit 1