
我试图从上面的表(order_status_data2)中检索唯一的值。我想获得以下字段的最新订单:id、order_id和status_id。高id字段值表示最近的项,即
4- 56 -4
8- 52 6
7-6-2
9-8-2
等。
我尝试了以下查询,但没有获得所需的结果(尤其是status_id字段):
select max(id) as id, order_id, status_id from order_status_data2 group by order_id这就是我得到的结果:

如何制定查询以获得所需的结果?
发布于 2013-07-02 09:49:12
就像这样:
select d.*
from order_status_data2 d
join (select max(id) mxid from order_status_data2 group by order_id) s
on d.id = s.mxid发布于 2013-07-02 09:49:38
SELECT o.id, o.order_id, o.status_id
FROM order_status_data2 o
JOIN (SELECT order_id, MAX(id) maxid
FROM order_status_data2
GROUP BY order_id) m
ON o.order_id = m.order_id AND o.id = m.maxidSQL Fiddle
在您的查询中,您没有对status_id设置任何约束,所以它从组中的任意行中选择了它。选择max(id)并不使它从恰好具有该值的行中选择status_id,您需要一个联接来为所有非聚合列选择一个特定的行。
发布于 2013-07-02 10:01:36
试试这个Query.This会帮你的
SELECT id ,orderid,statusid
FROM table_name
WHERE id IN
(
SELECT max(id) FROM table_name GROUP BY orderid
)
ORDER BY statusid 您可以引用这个使用您的示例的链接。
https://stackoverflow.com/questions/17422320
复制相似问题