【问题标题】:MySQL - INNER JOIN - take only the last ID from the second tableMySQL - INNER JOIN - 只取第二个表的最后一个 ID
【发布时间】:2013-05-15 08:35:09
【问题描述】:

我需要查询我的 MySQL 数据库中的两个表。 这是简短的概述:2 个表格:文章和 article_logs。我有 2700 篇文章,每篇文章可以有 20 到 50 条日志。 我想为每篇文章显示最后的日志日期。 问题是查询需要永远执行。

我正在尝试这样的事情:

SELECT articles.id, article_logs.date FROM articles
LEFT JOIN ( SELECT MAX(id), hash_key, date FROM logs GROUP BY id ) c 
ON article.hash_key = c.hash_key

您是否知道如何以适当和有效的方式做到这一点。

非常感谢您。

【问题讨论】:

  • 提示:date 是 MySQL 保留关键字,所以用 ` 包装它
  • 同时使用max(id)group by id 没有意义。任何其他 DBMS 都会简单地拒绝这种不正确的 group by 用法。
  • @diEcho,日期只是一个例子,在我的表中,字段的名称是 log_date...谢谢你。
  • @diEcho date可以用put backtick,MySQL Reserved Keywords List见页面最后部分

标签: mysql performance join


【解决方案1】:

也许你可以试试这样的:

SELECT a.id, 
       (SELECT MAX(l.date)
        FROM logs l
        WHERE l.hash_key = a.hash_key) date
FROM articles a

【讨论】:

  • Milos 我的查询仅在您需要 hash_key 的最大日期时才有效。但是,如果您需要 MAX id 的日期(如在您的查询中),则必须更改查询。现在我猜最大date 总是有最大id。如果某些事情不起作用,请写评论,我会编辑答案。
  • 是的,我需要特定 hash_key 的最大日期,因为每篇文章都由唯一的 hash_key 标识。
猜你喜欢
  • 2013-03-02
  • 2012-09-13
  • 2013-02-28
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多