我有以下 2 个表order
和tracking
. 结构如下:
Order
(列和数据):
id fecha nroorder description
1 2017-22-01 1000001 Order1
2 2017-22-01 1000002 Order2
3 2017-22-01 1000003 Order3
Tracking
(列和数据):
id idorder idstatus
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 1
7 3 2
这一切的关键是我需要它返回每个order
最高的,也就是说,我需要它返回:tracking
idstatus
order.id order.fecha order.nroorder order.description tracking.idstatus
1 2017-22-01 1000001 Order1 3
2 2017-22-01 1000002 Order2 2
3 2017-22-01 1000003 Order3 2
我尝试了以下语句(实际上是几个,但这是最接近的一个):
SELECT `order`.*, d.*
FROM `order` left JOIN (SELECT tracking.*
FROM tracking
ORDER BY tracking.id DESC limit 1) d
ON `order`.`id` = d.idorder
我tracking
订购它id
,删除最后一个,因为根据业务规则,它们在插入tracking
时会增加。idstatus
有什么问题或我错过了什么?
尝试像这样更改查询。按照您的方式,子查询只会为您带来所有记录中的一条,而您需要的是每个订单的一条记录。
子查询可以解决您的问题:
您的问题是您正在
LIMIT
执行JOIN
; 这样一来,您只会得到一行,tracking
而不是每行order
.此查询可以满足您的需要: