我已经编写了这个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)。
答案 0 :(得分:1)
您需要按Person.PID
和Person.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.PID
和Person.Name
的每个唯一组合只获取一行,则在ORDER BY子句之前添加GROUP BY
子句,并使用{{1} } MIN()
列表中的Preis
聚合。