2013-02-07 62 views
1

我有一個表A與列(a,b)和一個表B與列(b,c)。我想要做到以下幾點:複合mysql選擇後外連接

STEP 1: do a A LEFT OUTER JOIN B ON A.b = B.b 
STEP 2: convert all c = NULL in the Joined table to c = <default_value> 
STEP 3: SUM(A.a * B.c) over the table I get after STEP 2 

在一個複合語句中是否有快速的方法來做到這一點?

謝謝!

回答

1

你可以做的三個步驟在一個查詢,第一LEFT OUTER JOIN和使用IFNULLNULL值設置爲默認值,然後使用SUM

SELECT 
    SUM(A.a + IFNULL(B.c, <default_value>)) 
FROM A 
LEFT OUTER JOIN B ON A.b = B.b; 

SQL小提琴演示:

0
select 
    sum(A.a + IFNULL(B.c, some_default)) as some_sum 
FROM 
    A 
    LEFT JOIN B 
    ON 
     B.b = A.b 
0
select sum(A.a * (case when B.c = null then <default> else B.c end)) as joined_sum 
from A left outer join B on (A.b = B.b);