Załóżmy, że mam tabele a (z kolumną a1) ib (z kolumnami b1 i b2) i wykonuję lewe łączenie zewnętrzne
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Wtedy b1 i b2 będą miały wartość NULL, gdzie wartość a1 nie ma pasującej wartości b1.
Czy mogę podać wartość domyślną dla b2 zamiast NULL? Zauważ, że COALESCE nie będzie działać tutaj, bo nie chcę, aby zastąpić domyślną wartość potencjalnych wartości null w b2 gdzie jest wartość b1 dopasowania A1.
To znaczy, z aib jako
CREATE TABLE a (a1)
AS VALUES (1),
(2),
(3) ;
CREATE TABLE b (b1,b2)
AS VALUES (1, 10),
(3, null) ;
a1 b1 | b2
--- --------
1 1 | 10
2 3 | NULL
3
i domyślnie dla b2, powiedzmy 100, chcę uzyskać wynik
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
W tym prostym przypadku mógłbym to zrobić „ręcznie”, sprawdzając, czy b1 ma wartość NULL na wyjściu. Czy to ogólnie najlepsza opcja, czy może jest to bardziej standardowy i bardziej uporządkowany sposób?
sql
(co oznacza „SQL język zapytań”. Ten znacznik nie oznacza żadnego konkretnego produktu DBMS ani dialektu). Część:[b2]=CASE WHEN ... END
jest niepoprawnym (standardowym) wyrażeniem SQL.