Mysql 有没有办法找到自联接表中的最大值?
这是我当前的查询,将返回行程表中列出的最昂贵的旅行。当然,你可以简单地使用MAX,但我被指示不要使用它 这是我找到的返回我想要的内容的查询。在Trips表中,它包括TripId、StateofTrip(即MA、NC、PA)、TravelMethod(汽车、火车、公共汽车)和成本。因此,输出可能看起来像Mysql 有没有办法找到自联接表中的最大值?,mysql,sql,join,self-join,Mysql,Sql,Join,Self Join,这是我当前的查询,将返回行程表中列出的最昂贵的旅行。当然,你可以简单地使用MAX,但我被指示不要使用它 这是我找到的返回我想要的内容的查询。在Trips表中,它包括TripId、StateofTrip(即MA、NC、PA)、TravelMethod(汽车、火车、公共汽车)和成本。因此,输出可能看起来像 SELECT * FROM Trips T1 WHERE T1.Cost NOT IN (SELECT T2.Cost FROM Trips T1, Trips T2 WHERE T1.Cost
SELECT *
FROM Trips T1
WHERE T1.Cost NOT IN (SELECT T2.Cost FROM Trips T1, Trips T2 WHERE T1.Cost > T2.Cost)
我想知道的是,是否有一种方法可以在自连接而不是嵌套子查询中实现这一点。所以像这样开始的事情
987 CA Plane 2000
如果不显式使用MAX,是否可以执行此操作?如何比较自联接中的值并返回单数最大值
此外,在第一个查询中,是否有人可以解释嵌套的示例?我真的不明白NOT in如何返回所需的结果。切勿在FROM
子句中使用逗号。始终使用正确、明确、标准、可读的连接语法
您可以使用左连接和其中的找到最大值:
SELECT *
FROM Trips T1, Trips T2
....
我认为这是一个荒谬的方法来找到最大值。有很多更好的方法,包括:
SELECT T1.*
FROM Trips T1 LEFT JOIN
Trips T2
ON T2.Cost > T1.Cost
WHERE t2.Cost IS NULL;
将返回最昂贵旅行的查询
“最昂贵的旅行”是指价格/成本最高的旅行,也就是说,可能不止一次旅行同时最昂贵。所以
SELECT T.*
FROM Trips T
ORDER BY T.COST DESC
LIMIT 1;
limit 1
找不到所有成本最高(他们可能想要也可能不想要)的与听力相关的记录,因为我就是这样被教授语法的。谢谢你做笔记。
SELECT *
FROM Trips T1
WHERE NOT EXISTS ( SELECT NULL
FROM Trips T2
WHERE T2.Cost > T1.Cost )