sql - 多表关联查询如何获取副表最新的一条数据?
本文介绍了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屋!
查看全文