使用GROUP BY子句时,MYSQL查询崩溃

时间:2019-04-24 12:34:52

标签: mysql

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正在产生问题

有人可以用另一种方法来帮助我,以不同的方式获得相同的结果

1 个答案:

答案 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