在mysql的一个查询中用两个不同的位置计算两个不同的和

时间:2013-12-16 08:28:03

标签: mysql

伙计我有一个查询,它将计算一定的总和,相同的逻辑,相同的代码,但具有不同的where子句,我可以在一个查询中执行此操作吗?例如:

Select SUM( mi.myitem_price * msi.my_item_quantity) as order_sum from sometable where mi.myitem_order_id = 'somevalue';

第二次查询:

Select SUM( mi.myitem_price * msi.my_item_quantity) as location_sum from sometable where mi.myitem_location_id = 'somevalue';

为清楚起见,第一个查询将计算不同位置的所有订单,而第二个查询仅计算每个位置。我需要同时使用不同的值来获取order_sumlocation_sum

2 个答案:

答案 0 :(得分:1)

您可以尝试这种方式(使用条件聚合)

SELECT SUM(CASE WHEN mi.myitem_order_id = 'somevalue' 
             THEN mi.myitem_price * msi.my_item_quantity END) order_sum,
       SUM(CASE WHEN mi.myitem_location_id = 'somevalue' 
             THEN mi.myitem_price * msi.my_item_quantity END) location_sum 
-- WHERE mi.myitem_order_id = 'somevalue'
--    OR mi.myitem_location_id = 'somevalue'
  FROM sometable

答案 1 :(得分:0)

你也可以使用这样的查询

SELECT (Select SUM( mi.myitem_price * msi.my_item_quantity) 
from sometable AS mi where mi.myitem_order_id = 'somevalue') as order_sum,
(Select SUM( mi.myitem_price * msi.my_item_quantity) 
from sometable AS mi where mi.myitem_location_id = 'somevalue') as location_sum