haoffy 发表于 2020-7-24 14:47:49

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

求教查询方案:

Message 表 : id , user ,createDate

MessageDetail 表 :msgId, salesStaff ,lastEditDate ,remark

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



itjc8 发表于 2020-7-26 18:09:20

关联查询语句后面加个 ORDER BY lastEditDate DESC 然后取第一条不行么?

haoffy 发表于 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'
查起来贼慢...想优化一下

itjc8 发表于 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降序排,取第一条就行了,能不用子查询最好不要用子查询.

haoffy 发表于 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 ...

尽量不子查询的道理我懂,但这种方法只能查一条数据喔......只查'周杰伦' 还行,,,如果要查全部'男歌星' 的 列表就不行了
页: [1]
查看完整版本: 求教两表怎么只关联附表的最新一条