【问题标题】:Trouble getting distinct results in join query in mysql在 mysql 中的连接查询中无法获得不同的结果
【发布时间】:2017-06-25 15:33:54
【问题描述】:

我有两个表如下:

Mail_Thread
-------------
id,
thread_name,
created

,

Mail
----
id,
thread_id (FK for Mail_thread),
to,
subject,
message,
created

这里一个线程包含多封邮件。所以我希望结果是不同的线程和使用连接的线程的最后一条消息。那么有什么可能吗?

【问题讨论】:

    标签: mysql join distinct


    【解决方案1】:

    您可以通过 MySQL 中的一系列连接来完成此操作。第一个连接将线程连接到邮件消息,第二个连接将这些邮件消息限制为每个线程的最新消息。

    SELECT t1.thread_name,
           t2.message
    FROM Mail_Thread t1
    INNER JOIN Mail t2
        ON t1.id = t2.thread_id
    INNER JOIN
    (
        SELECT thread_id, MAX(created) AS max_created     -- this subquery identifies
        FROM Mail                                         -- the most recent message
        GROUP BY thread_id                                -- for each thread
    ) t3
        ON t2.thread_id = t3.thread_id AND
           t2.created   = t3.max_created
    

    【讨论】:

      【解决方案2】:
      select mt.id,mt.thread_name,mt.created
      from mail_thread mt 
      inner join mail m on mt.id =m.thread_id 
      group by m.thread_id
      order by mt.created desc
      

      【讨论】:

      • 虽然这段代码 sn-p 可以解决问题,包括说明 如何为什么 这解决了问题 would really help 以改进你的帖子质量。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2011-11-15
      • 2017-03-28
      • 2018-07-19
      • 1970-01-01
      相关资源
      最近更新 更多