我目前在Oracle数据库中具有以下两个表。
Table Continent with fields:
| CONTINENT | CONTINENTNAME |
Table Land with fields:
| LANDCODE | LANDNAME | CONTINENT | NUMBEROFLANGUAGES |
我想显示结果的洲名,地名和语言数量。在以下情况下:从每个洲显示具有最多语言数的地名。
当前结果 我得到此查询,它将显示世界上使用最多语言的国家,如下所示:
CONTINENTNAME | LANDNAME | NUMBEROFLANGUAGES
--------------------------------------------
Asia | India | 26
最终,只有我一个人,而不是世界上所有大洲。我在这里使用错误的方法还是在解决此查询方面接近?我很想知道如何解决这个SQL难题。
二手查询
SELECT c.CONTINENTNAME, l.LANDNAME, l.NUMBEROFLANGUAGES
FROM land l
INNER JOIN continent c
ON c.CONTINENT = l.CONTINENT
WHERE l.NUMBEROFLANGUAGES =
( SELECT MAX(l.NUMBEROFLANGUAGES)
FROM land l
);
您概念上很接近。我只是将您的SELECT MAX()查询作为联接移入,并基于此联接而将其联接到原始土地表。
SELECT
c.CONTINENTNAME,
l.LANDNAME,
l.NUMBEROFLANGUAGES
FROM
land l
INNER JOIN continent c
ON l.CONTINENT = c.CONTINENT
INNER JOIN ( SELECT l2.CONTINENT,
MAX(l2.NUMBEROFLANGUAGES) maxLang
FROM
land l2
group by
l2.CONTINENT) preQuery
ON l.CONTINENT = preQuery.CONTINENT
AND l.NUMBEROFLANGUAGES = preQuery.maxLang
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句