MYSQL查询在本地服务器上运行正常,没有错误..但是在生产服务器上使用时,它崩溃了,我必须重新启动服务器
这是我的order_table的表结构
item_id | order_id | status_id | date
-------------------------------------------
1 | 1 | 1 | 2014-01-20
2 | 1 | 2 | 2014-01-20
3 | 1 | 3 | 2014-01-20
4 | 2 | 1 | 2014-01-21
5 | 2 | 2 | 2014-01-21
6 | 3 | 1 | 2014-01-21
7 | 3 | 2 | 2014-01-21
8 | 3 | 3 | 2014-01-22
9 | 3 | 4 | 2014-01-22
10 | 3 | 5 | 2014-01-23
-------------------------------------------
我可以使用以下查询来获取order_id的最新状态
SELECT item_id, order_id, status_id
FROM order_table
WHERE item_id IN (
SELECT MAX(item_id)
FROM order_table
GROUP BY order_id
)
and status_id = '5'
order by order_id
以上查询在本地服务器上运行正常,但在生产服务器上崩溃。.但是,当删除GROUP BY时,该查询也在生产服务器上成功执行..看来GROUP BY正在产生问题
有人可以用另一种方法来帮助我,以不同的方式获得相同的结果
答案 0 :(得分:1)
标准方法(8之前的方法)如下-尽管WHERE子句应该在子查询中也可能(甚至可能)...
SELECT x.item_id
, x.order_id
, x.status_id
FROM order_table x
JOIN
( SELECT order_id
, MAX(item_id) item_id
FROM order_table
GROUP
BY order_id
) y
ON y.order_id = x.order_id
AND y.item_d = x.item_id
WHERE x.status_id = 5
order
by x.order_id