Here I have my table called "Pais"(Country in Spanish), Id_Pais is the Primary Key and Continente_FK(Continente stands for Continent) is a foreign key that relates each country to a continent, below you can see my data

我想要做的是一张表格,按大陆向我显示一个国家/地区的最大扩展名以及具有最大扩展名的国家/地区的名称,我已经用以下代码完成了第一部分:

SELECT MAX(Extension) FROM Pais GROUP BY Continente_FK;


该代码向我显示了与每个大洲相关联的最大扩展名,我尝试了其他代码,但它仅向我显示了所有国家/地区中的最大扩展名,而不是每个大陆的最大扩展名(全部中的最大数):

SELECT C.Id_Continente, P.Nombre, P.Extension,C.Nombre
FROM Pais P RIGHT OUTER JOIN Continente C ON C.Id_Continente=P.Continente_FK
WHERE P.Extension=(SELECT MAX(Extension) FROM Pais)
GROUP BY C.Id_Continente;


“ Nombre”表示“名称”

我真的不知道如何告诉MySQL“给”与最大扩展名相关的名称,请帮忙。

谢谢!

最佳答案

您在子查询中缺少条件:

SELECT C.Id_Continente, P.Nombre, P.Extension,C.Nombre
FROM Pais P RIGHT OUTER JOIN Continente C
ON C.Id_Continente=P.Continente_FK
WHERE P.Extension=(SELECT MAX(Extension) FROM Pais P2
                   WHERE P2.Continente_FK = C.Id_Continente)
GROUP BY C.Id_Continente;


我看到的唯一问题是,您是否有来自同一大陆的两个国家/地区具有相同的扩展名(这不太可能)。在每个大洲,您总是会得到一个结果。

关于mysql - 如何“告诉” MySQL以返回每个类别的最大值以及与该最大值相关的其他值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36462932/

10-13 02:52
查看更多