首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取左连接中的最后一行

获取左连接中的最后一行
EN

Stack Overflow用户
提问于 2018-06-25 03:21:58
回答 2查看 50关注 0票数 0

我试图用下面的代码来做这件事,通过左连接获得所有关键字的位置,它工作得很好,但它显示了每个关键字的第一个位置,但我想显示记录的最后一个位置(按日期)。

代码语言:javascript
复制
SELECT keyword.id, keyword.title, keyword.date, rank.position FROM keyword 
LEFT JOIN rank
ON rank.wordid = keyword.id
GROUP BY keyword.id
ORDER BY keyword.date DESC

我该怎么做呢?我应该使用子查询还是什么?有没有办法在不使用子查询的情况下做到这一点?

我想要的:

得到17而不是13,我的意思是最后的位置记录。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-25 03:36:16

不要使用group by来解决这个问题!您想要过滤,所以使用where子句。在这种情况下,使用相关子查询效果很好:

代码语言:javascript
复制
SELECT k.id, k.title, k.date, r.position
FROM keyword k LEFT JOIN
     rank r
     ON r.wordid = k.id AND
        r.date = (SELECT MAX(r2.date)
                  FROM rank r2
                  WHERE r2.wordid = k.id
                 )
ORDER BY k.date DESC
票数 2
EN

Stack Overflow用户

发布于 2018-06-25 14:59:52

您可以使用下面的查询

代码语言:javascript
复制
SELECT keyword.id, keyword.title, keyword.date, rankNew.position FROM keyword LEFT JOIN (
SELECT rank.wordid, rank.position FROM rank ORDER BY rank.id DESC LIMIT 0, 1) AS rankNew ON (rankNew.wordid = keyword.id);

您可以从Retrieving the last record in each group - MySQL获得更多参考资料

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51013235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档