我正在尝试查询以获取每个用户的最新汽车:
select * from users
left join
(select cars.* from cars
where cars.userid=users.userid
order by cars.year desc limit 1) as cars
on cars.userid=users.userid
它看起来像是在where子句中显示未知列“users.userid”,我试图删除cars.userid=users.userid部分,但它只获取1辆最新的汽车,并将其粘贴到每个用户。
有什么办法可以实现我的目标吗?谢谢!!
3条答案
按热度按时间jpfvwuh41#
一种选择是过滤
left join
使用子查询:对于性能,请考虑
car(userid, year)
.请注意,如果您有重复的,这可能会为每个用户返回多辆车
(userid, year)
在cars
. 最好有一个真正的约会,而不仅仅是一年。pu3pd22g2#
为此,我通常使用
row_number()
:jpfvwuh43#
也许有更好更有效的方法来查询这个。这是我的解决办法;