Mysql 使用指定的字段值和其他字段中的最高值联接行
我有两张桌子: 文章: ID整数 ... 第11条版本: 整型文章 朗恩 时间戳 主键文章,朗,时间 ... 我想从文章中选择字段,并从相关的最新行文章\u版本中选择字段。我应该使用join语句还是2个select语句?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,则可以使用:
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的名称不同,因此执行自然连接也会很麻烦。