Select SQL 中的 MIN()

Select MIN() in SQL

我已经写了这个 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、名称和价格,而价格是 min(Preis)。

您需要按 Person.PIDPerson.Name 对结果进行分组,以便 select 这些字段在您使用聚合函数 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;

由于您已经对行进行排序,只需添加一个 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

如果查询正确返回了您想要的结果,但是您得到的行数比您想要的多,您可以在 [= 之后添加一个 LIMIT 1 子句11=].

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