簡體   English   中英

無法在mysql中的聯接查詢中獲得不同的結果

[英]Trouble getting distinct results in join query in mysql

我有兩個表,如下所示:

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

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

這里一個線程包含多封郵件。 所以我希望結果是不同的線程以及使用join的那個線程的最后一條消息。 有什么可能嗎?

您可以通過在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
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM