收起左侧

求教两表怎么只关联附表的最新一条

4
回复
[复制链接]

1

主题

5

回帖

649

积分
发表于 2020-7-24 14:47:49 | 显示全部楼层 |阅读模式
求教查询方案:

Message 表 : id , user ,createDate

MessageDetail 表 :  msgId, salesStaff ,lastEditDate ,remark

MessageDetail 表 用msgId关联 Message 表,MessageDetail 表可能有多条,但我只要 lastEditDate 最大的



450

主题

635

回帖

4万

积分
发表于 2020-7-26 18:09:20 | 显示全部楼层
关联查询语句后面加个 ORDER BY lastEditDate DESC 然后取第一条不行么?
IT教程吧走一走,高薪迟早有!

1

主题

5

回帖

649

积分
 楼主| 发表于 2020-7-27 16:15:09 | 显示全部楼层
itjc8 发表于 2020-7-26 18:09
关联查询语句后面加个 ORDER BY lastEditDate DESC 然后取第一条不行么?

现在做法是
select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a
join messageDetail b on a.id=b.msgId
and b.lastEditDate=(select max(c.lasteditdate)from messageDetail c where c.messageId=a.messageId )
where b.salesStaff='zhoujielun'
查起来贼慢...想优化一下

450

主题

635

回帖

4万

积分
发表于 2020-8-6 06:00:32 | 显示全部楼层
haoffy 发表于 2020-7-27 16:15
现在做法是
select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from mess ...

select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a
(left或right) join messageDetail b on a.id=b.msgId AND b.salesStaff='zhoujielun' ORDERBY b.lastEditDate DESC LIMIT 1;
这是我的大概思路 能取出的多条数据按b.lastEditDate降序排,取第一条就行了,能不用子查询最好不要用子查询.
IT教程吧走一走,高薪迟早有!

1

主题

5

回帖

649

积分
 楼主| 发表于 2020-8-7 15:31:05 | 显示全部楼层
itjc8 发表于 2020-8-6 06:00
select a.id,a.createDate,a.user,b.msgId,b.salesStaff ,b.lastEditDate ,b.remark from message a
(left ...

尽量不子查询的道理我懂,但这种方法只能查一条数据喔......只查'周杰伦' 还行,,,如果要查全部'男歌星' 的 列表就不行了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则