2016-07-12 57 views
0

我有兩行是這樣的:如何通過使用MySQL重寫NULL值將兩行合併成一行?

id title   format region discs user_id origin_id 
------------------------------------------------------------------------ 
1  12 Monkeys  DVD  NULL  NULL  NULL  NULL 
2  Twelve Monkeys NULL  NULL  1  2   1 

我想做一個SELECT調用總是返回數據時user_idNULL。下面是我期待的結果應該是什麼:

id title   format region discs user_id origin_id 
----------------------------------------------------------------------- 
2  Twelve Monkeys DVD  NULL  1  2   1 

正如你所看到的,format接到id 1充滿因爲NULLid 2,但一切從ID充滿2.

什麼MySQL語句可以爲我做到這一點?

+0

你怎麼知道,這兩個行結合?你的桌子只有兩排嗎? –

+0

我剛剛添加了連接兩者的'origin_id'列。它們將來自'user_id'的'SELECT'。 –

回答

1

爲您給出的數據,你可以使用一個left joincoalesce()的值優先:

select coalesce(t.id, t2.id) as id, 
     coalesce(t.title, t2.title) as title, 
     coalesce(t.format, t2.format) as format, 
     coalesce(t.region, t2.region) as region, 
     coalesce(t.discs, t2.discs) as discs, 
     t.user_id 
from t left join 
    t t2 
    on t2.user_id is null 
where t.user_id is not null;