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


Он возвращает то, что вы хотите, без каких-либо ошибок:
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<>рабочий пример здесь
Этот запрос не должен вызывать эту ошибку. Вы уверены, что это код, который вы используете?