MySQL中的GROUP BY优先级

时间:2018-09-17 03:30:06

标签: mysql

我有两个桌子。一个称为rules,另一个称为data。规则表保存具有descriptioniddate_created的事件,仅用于对事件进行分类。

data表具有dateid列;这样可以存储事件的实际日期,因为事件的日期可能长达数月之久。

我的问题是这样的:我希望从data中选择所有内容,并按date进行分组,因此每个日期仅代表一次。但是,如果发生冲突,则创建日期最近的事件应优先,也就是说,同一天发生两个事件。这是我尝试过的方法,无法控制date_created

SELECT d.date, r.description FROM data d LEFT JOIN rules r ON d.id = r.id GROUP BY date ORDER BY d.date

我还没有加入date_created,因为我被卡住了,而且不确定在查询中应该将其放在什么位置才能获得理想的效果。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

从您的问题看来,我首先需要选择事件创建的最大日期,然后使用子查询就可以得到所需的结果:

SELECT a.date, b.description
FROM data a
INNER JOIN (
    SELECT id, description,MAX(date_created) as mdate
    FROM rules
    GROUP BY id,description
) b ON a.id = b.id AND a.date = b.mdate