mysql中的按优先级分组

6rqinv9w  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(285)

我有两张table;一个叫做 rules 另一个呢 data . rules表保存事件,这些事件具有 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 然而,因为我被卡住了,不知道它应该在查询中的什么地方得到想要的效果。任何想法都将不胜感激!

flvlnr44

flvlnr441#

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

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

相关问题