我有两个桌子。一个称为rules
,另一个称为data
。规则表保存具有description
,id
和date_created
的事件,仅用于对事件进行分类。
data
表具有date
和id
列;这样可以存储事件的实际日期,因为事件的日期可能长达数月之久。
我的问题是这样的:我希望从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
,因为我被卡住了,而且不确定在查询中应该将其放在什么位置才能获得理想的效果。任何想法将不胜感激!
答案 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