【问题标题】:MYSQL - GROUP BY 2 COLUMN ORDER BY CREATION DATEMYSQL - 按创建日期按 2 列分组
【发布时间】:2017-06-15 16:49:12
【问题描述】:

我正在尝试使用 GROUP BY 在 2 列上获取表的所有结果并获取最后插入。

“价格”表:

我的要求:

SELECT DISTINCT p.*
FROM prices p 
JOIN (
SELECT MAX(created_at) as "last_created" 
FROM prices
WHERE station_id = 27210003
GROUP BY station_id, fuel_id) as sub 
ON sub.last_created = p.created_at
WHERE p.station_id = 27210003
GROUP BY p.station_id, p.fuel_id

结果是 3 行但错误的行,因为上次不是在我的数据库中创建的 -_-'

请帮帮我!!! >_

谢谢

【问题讨论】:

    标签: mysql join group-by max multiple-columns


    【解决方案1】:

    由于您在WHERE 子句中选择了特定的station_id,因此您无需将其包含在GROUP BY 中。

    子查询必须返回您要分组的列,然后您必须将它们包含在ON 子句中。

    并且您不需要在外部查询中使用GROUP BY,因为JOIN 应该确保每个fuel_id 只有一行(除非相同fuel_id 和@ 有重复的created_at 987654330@)。

    SELECT DISTINCT p.*
    FROM prices p 
    JOIN (
        SELECT fuel_id, MAX(created_at) as "last_created" 
        FROM prices
        WHERE station_id = 27210003
        GROUP BY fuel_id) as sub 
    ON sub.last_created = p.created_at AND sub.fuel_id = p.fuel_id
    WHERE p.station_id = 27210003
    

    【讨论】:

    • 似乎不可能不止一个,但我们开始了。
    • 如果可以的话,您需要使用的不仅仅是GROUP BY fuel_id,您还需要在MAXMIN 的另一列中选择您想要的。
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2010-10-31
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多