[英]How to Combine two mysql queries
我想將這兩個查詢與兩個隊長結合起來應該相等:
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
合並可以是JOIN或UNION
對於JOIN :
Select *
from
(select distinct(captain_name) capName,sum(finaldiscount) as tot,payment_mode from order_master where payment_mode='card' group by captain_name ) t1
INNER JOIN
(select distinct(captain_name) capName,sum(finaldiscount) as tot,payment_mode from order_master where payment_mode='cash' group by captain_name) t2 on t1.capName = t2.capName
對於UNION :
Select *
from
(select distinct(captain_name) capName,sum(finaldiscount) as tot,payment_mode from order_master where payment_mode='card' group by captain_name ) t1
UNION
(select distinct(captain_name) capName,sum(finaldiscount) as tot,payment_mode from order_master where payment_mode='cash' group by captain_name) t2
嘗試這個:
SELECT captain_name,
SUM(CASE WHEN payment_mode = 'cash' THEN finaldiscount ELSE 0 END) AS cashTotal,
SUM(CASE WHEN payment_mode = 'card' THEN finaldiscount ELSE 0 END) AS cardTotal
FROM order_master
WHERE payment_mode IN ('cash', 'card')
GROUP BY captain_name
要么
SELECT captain_name, payment_mode, SUM(finaldiscount) total
FROM order_master
WHERE payment_mode IN ('cash', 'card')
GROUP BY captain_name, payment_mode
嘗試這個 :
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
和group by
它由captain_name,payment_mode
。
如果您不希望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
意味着只有兩個查詢返回的那些隊長,才應該由合並查詢返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.