Как заставить LEFT OUTER JOIN возвращать NULL или пусто?

SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

поэтому, если table1.id = NULL, я хочу вернуть NULL или пустую строку из таблицы2, т.е.

ID,     NAME
1       name1
2       name2
null    null
3       name3

но теперь возникает ошибка «неоднозначно определен столбец», поскольку в таблице 2 много значений NULL в столбце идентификатора

Этот запрос не должен вызывать эту ошибку. Вы уверены, что это код, который вы используете?

GMB 14.12.2020 23:28

вы получаете этот столбец ошибки ORA-00918, неоднозначно определенный. когда столбец, используемый в соединении, существует более чем в одной таблице и упоминается без псевдонима таблицы, мы не видим этого в вашем примере запроса, если только запрос, выдавший вам ошибку, не отличается от показанного выше.

Himanshu Kandpal 15.12.2020 02:11
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
353
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Он возвращает то, что вы хотите, без каких-либо ошибок:

SELECT table1.id, table2.name
FROM table1
LEFT JOIN table2
ON table1.id = table2.id;

Что для примера данных:

CREATE TABLE table1 ( id ) AS
SELECT 1 FROM DUAL UNION ALL
SELECT 2 FROM DUAL UNION ALL
SELECT NULL FROM DUAL UNION ALL
SELECT 3 FROM DUAL;

CREATE TABLE table2 ( id, name ) AS
SELECT 1, 'name1' FROM DUAL UNION ALL
SELECT 2, 'name2' FROM DUAL UNION ALL
SELECT 3, 'name3' FROM DUAL;

Выходы:

  ID | NAME 
---: | :----
   1 | name1
   2 | name2
   3 | name3
null | null

db<>рабочий пример здесь

Другие вопросы по теме