【问题标题】:MySQL query - Select statement from two tables with group by returning records with largest idsMySQL 查询 - 通过返回具有最大 id 的记录从具有组的两个表中选择语句
【发布时间】:2022-01-06 19:24:01
【问题描述】:

我真的需要你的帮助,我已经花了很多时间试图弄清楚但没有成功:(

我有两张桌子:

我需要按 sea_id / bat_season 对所有内容进行分组,并获得这些季节的最大 ID。所以 bat_id 的 3 和 5 应该与它们的链接数据一起返回。 但是如果表 2 中没有数据,我仍然应该看到没有表 2 详细信息的两个季节的详细信息。

我最接近的结果是下面的声明:

SELECT b.bat_id, b.bat_trophies, b.bat_ranking, s.sea_id, s.sea_name, s.sea_start 
FROM gvg_seasons s 
LEFT JOIN (SELECT bat_id, bat_trophies, bat_ranking, bat_season FROM gvg_battles ORDER BY bat_id DESC LIMIT 1) b 
ON s.sea_id = b.bat_season 
WHERE s.sea_gl_id = 1
GROUP BY s.sea_id DESC

结果: Result

如果有人可以在这里帮助我,我将非常感激。

【问题讨论】:

标签: mysql database select groupwise-maximum


【解决方案1】:

我没有尝试过,因为我不想从您的图像中转录表格数据,但它应该提供您正在寻找的结果。

最里面的子查询获取每个 bat_season 的 max(bat_id)。这与 gvg_battles 结合在一起,以提供每个赛季的最新战斗。

SELECT *
FROM gvg_seasons s
LEFT JOIN (
    SELECT b1.*
    FROM gvg_battles b1
    JOIN (
        SELECT bat_season, MAX(bat_id) AS max_bat_id
        FROM gvg_battles
        GROUP BY bat_season
    ) b_max ON b1.bat_id = b_max.max_bat_id
) b2 ON s.sea_id = b2.bat_season;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    相关资源
    最近更新 更多