首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL -将最近的匹配记录从一个表连接到另一个表

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

Stack Overflow用户
提问于 2010-10-06 12:05:15
回答 3查看 7.7K关注 0票数 2

我有两个表,如下所示:

表:案例

id

名字

状态

case_no

表:备注

id

case_id

note_date

备注

我希望能够创建一个查询,该查询从cases表中获取数据,并且只为cases表中的每一行从notes表中获取最近的条目。到目前为止,我一点运气都没有。

如有任何指示,我们将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-06 12:16:44

这将仅返回附加了备注的案例:

代码语言:javascript
复制
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

如果您想要所有的案例,无论它们是否附加了备注:

代码语言:javascript
复制
   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
票数 11
EN

Stack Overflow用户

发布于 2010-10-06 12:16:46

代码语言:javascript
复制
    SELECT *
      FROM cases c
INNER JOIN notes n ON n.case_id = c.id
                  AND n.id = (SELECT MAX(id)
                                FROM notes
                               WHERE case_id = c.id)

此外,通常的做法是将指向最后一个注释id的指针直接保存在cases表中,并通过触发器支持它

票数 5
EN

Stack Overflow用户

发布于 2013-03-20 21:05:06

我最近一直有同样的问题,这个论坛对我帮助很大,但我发现OMG小马的答案并不完整。它适用于有注释的情况,但不适用于没有注释的情况,这是我的问题。我的答案是类似的,但我不是用注释加入组查询,而是用案例加入它。

它将是:

代码语言:javascript
复制
SELECT c.*, x.*
FROM CASES c
    LEFT 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 = c.case_id
    LEFT JOIN NOTES x ON x.case_id = c.case_id AND x.note_date=y.max_note_date

它也适用于只获取带有注释的案例,删除一个left关键字或两个都移除

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3869426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档