2016-07-12 5 views
0

Ich habe zwei Reihen wie folgt aus:Wie kombiniere ich zwei Zeilen zu einer einzigen Zeile, indem ich NULL-Werte mit MySQL überschreibe?

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 

ich einen Anruf SELECT tun wollen, die immer die Daten zurückgibt, wenn ein user_id nicht NULL ist. Hier ist, was das Ergebnis ich suche sein sollte:

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

Wie Sie sehen können, habe format von id 1 gefüllt wegen NULL auf id 2, aber alles andere von id gefüllt 2.

Was ist der MySQL Statement das kann das für mich?

+0

Wie wissen Sie, diese beiden Zeilen zu kombinieren? Hat die Tabelle nur zwei Zeilen? –

+0

Ich habe gerade die 'origin_id'-Spalte hinzugefügt, die die beiden verbindet. Sie kommen von einem 'SELECT' aus einer' user_id'. –

Antwort

1

Für Ihre angegebenen Daten können Sie ein left join und coalesce() verwenden, um die Werte zu priorisieren:

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; 
Verwandte Themen