我想合并三个查询,我想获得这三个查询的聚合结果,我怎样才能在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'
答案 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