合并MySQL查询

时间:2015-01-20 08:09:59

标签: mysql sql

我想合并三个查询,我想获得这三个查询的聚合结果,我怎样才能在MySQL中实现这一点?

我的疑问

SELECT 
  order_table_no,
  count(bill_no),
  sum(finaldiscount) 
from order_master     
where `ORDER_TABLE_NO` like 'HOME%' 
  and order_time >= '2015-01-01' 
  and order_time <= '2015-01-20'

SELECT 
  distinct(ORDER_TABLE_NO),
  sum(order_quantity*order_item_price) AS order_master_FINALDISCOUNT, 
  count(bill_no) 
FROM `order_master` order_master 
WHERE date(order_master.`ORDER_TIME`) >= '2015-01-01' 
  AND date(order_master.`ORDER_TIME`) <= '2015-01-20' 
  and order_table_no not like 'HOME%' 
  and order_table_no not like 'TAKE%' 
GROUP BY ORDER_TABLE_NO

SELECT 
  order_table_no,
  count(bill_no),
  sum(finaldiscount) 
from order_master 
where `ORDER_TABLE_NO` like 'TAKE%' 
  and order_time >= '2015-01-01' 
  and order_time <= '2015-01-20' 

1 个答案:

答案 0 :(得分:1)

您的第一个和最后一个查询没有任何group by子句有点奇怪。这不需要任何连接 - 只需使用MySQL IF控制流功能(http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if):

select
  order_table_no,
  count(bill_no),
  IF(order_table_no like 'TAKE%' or order_table_no like 'HOME%', sum(finaldiscount), sum(order_quantity * order_item_price)) finaldiscount
from
  order_master
where
  order_time >= '2015-01-01' and
  order_time <= '2015-01-20' 
group by
  order_table_no