2017-02-17 42 views
2

我正在使用MySQL,我是一個新手! 希望你們在這裏可以幫我解決一個SQL問題。如何加入並給出一個默認值,如果一個值在一個表中,但不是另一個?

說我有2個表,我想要一個簡單的連接。

表1:

id | service_id | user_number 
    ---------------------------------------------------------------------- 
    0 | 1001  | 10 
    1 | 1002  | 20 
    2 | 1004  | 40 

表2:

id | service_id | error_number 
    ---------------------------------------------------------------------- 
    0 | 1001  | 1000 
    1 | 1003  | 3000 
    2 | 1004  | 4000 

我想要做service_id聯接,並有user_numbererror_number默認值是0,如果它不存在。 所以:

id | service_id | user_number | error_number 
    ---------------------------------------------------------------------- 
    0 | 1001  | 10   | 1000 
    1 | 1002  | 20   | 0 
    3 | 1003  | 0   | 3000 
    2 | 1004  | 40   | 4000 

我嘗試了一些疑問,但他們不停地給我null而不是0 非常感謝。

+1

讓我們瞭解您嘗試:) – BobC

回答

0

這裏你應該用union第一,然後做彙總:

select t.`service_id`, sum(t.`user_number`) as `user_number`, sum(t.`error_number`) as `error_number` 
from (
    select `service_id`, `user_number`, 0 as `error_number` from t1 
    union 
    select `service_id`, 0 as `user_number`, `error_number` from t2 
) t 
group by `service_id` 

demo這裏。

+0

使用'工會all',不'union'。 –

0

你可以試試這個,隊友:

SELECT 
    t1.id, 
    t1.service_id, 
    COALESCE(tb1.user_number, 0) `user_number`, 
    COALESCE(tb2.error_number, 0) `error_number` 
FROM 
    (
     SELECT id, service_id 
     FROM table1 
     UNION 
     SELECT id, service_id 
     FROM table2 
    ) t1 
    LEFT JOIN table1 tb1 ON tb1.service_id = t1.service_id 
    LEFT JOIN table2 tb2 ON tb2.service_id = t1.service_id; 
0

試試這個:

select COALESCE(t1_service,t2_service) as service_id, COALESCE(user_number,0) as user_number , COALESCE(error_number,0) as error_number 
from (
select t1.service_id as t1_service , t1.user_number , t2.error_number, t2.service_id as t2_service 
from table_1 t1 
LEFT OUTER JOIN table_2 t2 
on t1.service = t2.service 
union 
select t1.service_id as t1_service , t1.user_number , t2.error_number, t2.service_id as t2_service 
from table_1 t1 
Right OUTER JOIN table_2 t2 
on t1.service = t2.service 
)z1 
order by service_id 
相關問題