sql - 多表关联查询如何获取副表最新的一条数据?

查看:629
本文介绍了sql - 多表关联查询如何获取副表最新的一条数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

多表关联查询,对于副表怎么才能获取到MAX(t_track.t_id)对应的一条数据?

代码如下,查询结果,t_track.t_content,t_track.t_dateline这两个字段得出的数据都对不上MAX(t_track.t_id)的那条数据,应该怎么改呢?只用一条语句解决问题。在线等。。。

SELECT t_sales.t_id,t_sales.t_company, MAX(t_track.t_id) as track_id,t_track.t_content,t_track.t_dateline...

完整的语句:

SELECT 

`t_sales`.`t_id`,
`t_sales`.`t_company`,
`t_sales`.`t_fenlei`, 
`t_sales`.`t_tel`, 
`t_sales`.`province`, 
`t_sales`.`city`, 
MAX(t_track.t_id) as track_id, 
`t_track`.`t_content`, 
`t_track`.`t_dateline`, 
`t_city_1`.`city_name`, 
`t_user`.`t_realname` 

FROM `t_sales` 

right join `t_track` 
ON t_sales.t_id = t_track.t_sale_id 

left join `t_city_1` ON t_sales.t_city = t_city_1.t_id 
left join `t_user` ON t_sales.t_for_sale = t_user.t_id 

WHERE (
    (
        (`t_track`.`t_uid`='214') AND (`t_user`.`t_id`='214')
    ) AND (
        t_sales.t_id IS NOT NULL
    )
) AND (
    t_track.t_sale_id IS NOT NULL
) 

GROUP BY `t_track`.`t_sale_id` 

ORDER BY `t_track`.`t_dateline` DESC

解决方案

SELECT `t_sales`.`t_id`, `t_sales`.`t_company`, `t_sales`.`t_fenlei`, `t_sales`.`t_tel`, `t_sales`.`province`, `t_sales`.`city`, MAX(t_track.t_id) as track_id, `t_track`.`t_content`, `t_track`.`t_dateline`, `t_city_1`.`city_name`, `t_user`.`t_realname` FROM `t_sales` right join (select *from `t_track` ORDER BY `t_track`.`t_dateline` DESC) `t_track` ON t_sales.t_id = t_track.t_sale_id left join `t_city_1` ON t_sales.t_city = t_city_1.t_id left join `t_user` ON t_sales.t_for_sale = t_user.t_id WHERE (((`t_track`.`t_uid`='214') AND (`t_user`.`t_id`='214')) AND (t_sales.t_id IS NOT NULL)) AND (t_track.t_sale_id IS NOT NULL) GROUP BY `t_track`.`t_sale_id`

这篇关于sql - 多表关联查询如何获取副表最新的一条数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆