我想将这两个查询结合起来,两个 captain 应该相等:
select distinct(captain_name),sum(finaldiscount) as tot,payment_mode
from order_master
where payment_mode='card'
group by captain_name
select distinct(captain_name),sum(finaldiscount) as tot,payment_mode
from order_master
where payment_mode='cash'
group by captain_name
最佳答案
试试这个:
SELECT captain_name,
Sum(finaldiscount) AS tot,
payment_mode
FROM order_master
WHERE payment_mode IN( 'cash', 'card' )
AND captain_name IN (SELECT captain_name
FROM order_master
WHERE payment_mode IN( 'cash', 'card' )
GROUP BY captain_name
HAVING Count(DISTINCT payment_mode) = 2)
GROUP BY captain_name,payment_mode
子查询将只返回那些同时具有 payment_mode
即 card
和 cash
的 captain_name
。然后选择那些 captain_name
的行,并按 captain_name,payment_mode
group by
。
如果您不想为 card
和 cash
单独的行,那么使用这个:
SELECT captain_name,SUM(finaldiscount)
FROM order_master
WHERE payment_mode IN( 'cash', 'card' )
GROUP BY captain_name
HAVING Count(DISTINCT payment_mode) = 2
注意:我假设two captain should be equal
意味着只有那些由两个查询返回的船长,应该由组合查询返回。
关于mysql - 如何合并两个mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312902/