Mysql 使用指定的字段值和其他字段中的最高值联接行

Mysql 使用指定的字段值和其他字段中的最高值联接行,mysql,Mysql,我有两张桌子: 文章: ID整数 ... 第11条版本: 整型文章 朗恩 时间戳 主键文章,朗,时间 ... 我想从文章中选择字段,并从相关的最新行文章\u版本中选择字段。我应该使用join语句还是2个select语句? 我怎样才能做到这一点呢?您试图检索的信息令人困惑,但如果您知道某个特定的ID,则可以使用: SELECT ID,lang,time FROM articles,article_versions WHERE articles.ID=<article_id_you_provi

我有两张桌子: 文章: ID整数 ... 第11条版本: 整型文章 朗恩 时间戳 主键文章,朗,时间 ... 我想从文章中选择字段,并从相关的最新行文章\u版本中选择字段。我应该使用join语句还是2个select语句?
我怎样才能做到这一点呢?

您试图检索的信息令人困惑,但如果您知道某个特定的ID,则可以使用:

SELECT ID,lang,time
FROM articles,article_versions
WHERE articles.ID=<article_id_you_provide> AND
      articles.ID=article_versions.article AND
      article_versions.time = (SELECT max(time)
                               FROM article_versions
                               WHERE article=<article_id_you_provide>);

如果这不是您想要的,请告诉我,我可以进一步修改我的答案。

假设[Articles\u versions].[time]是联接集中返回的唯一列,您可以使用以下选项:

SELECT [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang], MAX([Articles_versions].[time])
FROM Articles Inner Join Articles_versions ON [Articles].[ID] = [Articles_versions].[article]
GROUP BY [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang]

这不会获取最新的文章版本。所以MAXtime是最新的,但是article_版本中的其他字段不是,它正在做我想要的事情。但是性能呢,这不是比join慢还是和join一样?从某种意义上说,这样做是一种连接,因为它需要两个表和where子句的叉积。我没有使用连接语法的原因是,您在article_版本中的外键与articles的名称不同,因此执行自然连接也会很麻烦。