Предположим, у меня есть таблицы a (со столбцом a1) и b (со столбцами b1 и b2), и я выполняю внешнее левое соединение
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Тогда b1 и b2 будут равны NULL, если значение a1 не соответствует значению b1.
Могу ли я указать значение по умолчанию для b2 вместо NULL? Обратите внимание , что COALESCE не будет работать здесь, потому что я не хочу , значение по умолчанию для переопределения потенциальных NULLs в b2 , где это значение b1 согласования a1.
То есть с а и б как
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
и по умолчанию для b2, скажем, 100, я хочу получить результат
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
В этом простом случае я мог бы сделать это «вручную», посмотрев, является ли b1 нулевым в выводе. Это лучший вариант в целом, или есть более стандартный и аккуратный способ?
sql
(что означает «SQL язык запросов». Этот тег не обозначает какой-либо конкретный продукт или диалект СУБД). Часть:[b2]=CASE WHEN ... END
является недопустимым (стандартным) выражением SQL.