gpt4 book ai didi

mysql - 组合 2 个 SQL 查询以获取一列中的不同值以及第二列中的最大值

转载 作者:行者123 更新时间:2023-11-29 08:13:57 24 4
gpt4 key购买 nike

我有下表:

Country Year
100 201313
100 201212
101 201314
101 201213
101 201112
102 201313
102 201212
103 201313
103 201212
104 201313
104 201212

我需要一个仅提供一个国家/地区和一年中最大值的查询,例如:

Country Year
100 201313
101 201314
102 201313
103 201313
104 201313

到目前为止,我的解决方案是进行第一个查询,在其中获取不同的国家/地区,然后稍后再进行另一个查询以获取年份...

$resOne = $mysqli->query("SELECT DISTINCT Country from Table ORDER BY Country ASC");
while ($obj = $resOne->fetch_object()){
$resTwo = $mysqli->query("SELECT Country, Year from Table WHERE Country = $resOne->Country ORDER BY Country ASC LIMIT 1")->fetch_object();
echo $resTwo->Country $resTwo->Year;
}

问题:是否可以通过某种方式仅通过一次查询来提供此结果?

感谢您的阅读和回答。

更新

来自 user2989408 和 Drew 的答案的脚本很好并且可以工作,但是当我将表与另一个表连接时,我没有得到正确的数据。

这是我的数据库示例和脚本的 fiddle :http://sqlfiddle.com/#!2/31613/1/0

如何使描述行显示 MAX(s.Year) 的描述?例如, fiddle 中的第一行应显示“法国最新201314”。

最佳答案

查询:

SQLfiddleexample

SELECT c.Name, s.Description, s.Year
FROM countries c
JOIN seasons s
ON c.Id=s.Id
LEFT JOIN seasons s2
ON s.ID = s2.ID
AND s2.Year > s.Year
WHERE s2.id is null
ORDER BY c.Name ASC

结果:

|        NAME | DESCRIPTION |   YEAR |
|-------------|-------------|--------|
| France | newest | 201314 |
| Germany | new | 201212 |
| Italy | new | 201313 |
| Netherlands | newest | 201313 |
| Spain | new | 201313 |

关于mysql - 组合 2 个 SQL 查询以获取一列中的不同值以及第二列中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com