mysql - 在 mysql 中的连接查询中无法获得不同的结果

标签 mysql join distinct

我有两个表如下:

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

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

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

最佳答案

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

关于mysql - 在 mysql 中的连接查询中无法获得不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105966/

相关文章:

mysql : innodb corrupted data - recovery failing

MYSQL:如何从姓氏中找到player_id?

mysql - 对于将 5 个表连接在一起有点困惑

MySql 选择多列唯一行

mysql - 数据库中的重复项,帮助编辑我的查询以过滤掉它们?

php - mysql最多可以同时处理多少记录?

php - 我应该如何在 php 脚本中比较两种不同的产品价格?

python - 在多个不同名称的列上合并两个 Pandas 数据框

mysql - 使用sql查找源和最终目的地

mysql - 触发和信号逻辑