在SQL中选择MIN()

时间:2015-06-19 14:59:49

标签: mysql sql select min

我已经编写了这个sql语句来获取个人ID,名称和价格,例如机票。

SELECT Person.PID, Person.Name, Preis
FROM table.flug Flug
INNER JOIN table.flughafen Flughafen ON zielflughafen = FHID
INNER JOIN table.bucht Buchungen ON Flug.FID = Buchungen.FID
INNER JOIN table.person Person ON Buchungen.PID = Person.PID
WHERE Flug.FID = '10' ORDER BY Preis ASC;

我的输出是正确的,但它应该只是min(Preis)的行。

如果我相应地更改了我的代码,我会收到错误...

SELECT Person.PID, Person.Name, min(Preis)
FROM table.flug Flug ...

作为输出,我需要一条线:PID,名称和价格,而价格是最小值(Preis)。

3 个答案:

答案 0 :(得分:1)

您需要按Person.PIDPerson.Name对结果进行分组,以便在您使用汇总功能min()的同一查询中选择这些字段。

SELECT Person.PID, Person.Name, min(Preis) as Preis
FROM table.flug Flug ....
WHERE Flug.FID = '10'
GROUP BY Person.PID, Person.Name
ORDER BY 3 ASC;

答案 1 :(得分:0)

由于您已经对行进行了排序,只需添加limit子句:

SELECT     Person.PID, Person.Name, Preis
FROM       table.flug Flug
INNER JOIN table.flughafen Flughafen ON zielflughafen = FHID
INNER JOIN table.bucht Buchungen ON Flug.FID = Buchungen.FID
INNER JOIN table.person Person ON Buchungen.PID = Person.PID
WHERE      Flug.FID = '10' 
ORDER BY   Preis ASC
LIMIT      1

答案 2 :(得分:0)

如果查询正确返回您想要的结果,但是您获得的行数超出了您想要的数量,则可以在LIMIT 1之后添加 ORDER BY 子句。< / p>

如果您想为Person.PIDPerson.Name的每个唯一组合只获取一行,则在ORDER BY子句之前添加GROUP BY子句,并使用{{1} } MIN()列表中的Preis聚合。