一尘不染

MYSQL-将最近匹配的记录从一个表连接到另一个表

mysql

我有两个看起来像这样的表:

表:案例

id
名称
状态
case_no

表:注意事项

id
case_id
note_date
注释

我希望能够创建一个查询,以从案例表中获取数据,并仅从注释表中获取案例表中每一行的最新条目。到目前为止,我根本没有运气。

任何指针将不胜感激


阅读 259

收藏
2020-05-17

共1个答案

一尘不染

这只会返回带有注释的案例:

SELECT c.*,
       x.*
  FROM CASES c
  JOIN NOTES x ON x.case_id = c.case_id
  JOIN (SELECT n.case_id,
               MAX(n.note_date) AS max_note_date
          FROM NOTES n
      GROUP BY n.case_id) y ON y.case_id = x.case_id
                           AND y.max_note_date = x.note_date

如果需要所有案例,无论是否附带注释:

   SELECT c.*,
          x.*
     FROM CASES c
LEFT JOIN NOTES x ON x.case_id = c.case_id
     JOIN (SELECT n.case_id,
                  MAX(n.note_date) AS max_note_date
             FROM NOTES n
         GROUP BY n.case_id) y ON y.case_id = x.case_id
                              AND y.max_note_date = x.note_date
2020-05-17