这个查询必须是最优的吗?如果不是,是否有任何方法可以改善该查询

时间:2018-10-08 11:13:59

标签: mysql

我写了一个SQL查询,但是我不知道它是不是最好。

我有两个表,关系是1-n。

订单表

|---------------------|
|      orderNumber    | 
|---------------------|
|          status     |
|---------------------|

orderDetail

|---------------------|
|      orderNumber    | 
|---------------------|
|          quantity   |
|---------------------|
|       price         |
|---------------------|

我要获取状态为shipped的订单,并且totalPrice大于1500并且totalPrice排序下降

SELECT * FROM order JOIN 
       (Select sub1.orderNumber, SUM(sub1.totalEach) AS total FROM (
          select (quantity * price) AS totalEach, orderNumber FROM orderDetail)
      AS sub1 GROUP BY sub1.orderNumber HAVING total > 1500 ORDER BY total DESC
      ) AS sub2 
      ON order.orderNumber = sub2.orderNumber 
      WHERE order.status = 'shipped'

1 个答案:

答案 0 :(得分:1)

您可以避免子查询;并使用两个表之间的variable以及Inner joinGroup by来解决此问题。

尝试以下操作:

Having