mysql中一对多关联,获取多表中最新一条数据

这篇博客探讨了在MySQL中如何高效地查询一对多关系中的最新数据。作者列举了三种方法,包括使用GROUP_CONCAT配合SUBSTRING_INDEX函数。这种方法避免了遍历查询和子查询的效率问题,通过先排序再进行分组拼接,然后按特定分隔符截取首个元素,从而获取每组的最新数据。
摘要由CSDN通过智能技术生成
背景

在msyql查询中经常会出现一对多查询,只查询多表中的其中一条最新的数据或者达成某个条件的数据。如果只用GROUP BY已经不能满足查询结果,这时查询就会变得复杂。

举个例子,学校表、课程表、课程排序表,我需要每个学校下面课程排序最靠前的一个课程。

在有些案列中我们可以看到被人使用的方法是:

``SELECT c.Id FROMt_course_rank AS ocrLEFT JOIN ( SELECT * FROM t_course WHERE coursetype = 2 ORDER BY Visit DESC ) AS c ON c.Id = ocr.courseidLEFT JOIN t_school AS s ON c.LoginId = s.LoginIdWHEREc.LoginId IN (19) GROUP BY c.LoginId

通过临时表关联完成某中条件中最新数据,但是这种查询不准确,无法满足条件。

解决方案

1.先查出所有数据,然后遍历去查询(php中foreach中查询),简单,但是效率很低,过程可能复杂。
2. 先排序然后在调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值