Итак, если таблица A:
no | username
1 | admin
2 | chicken
И таблица B:
id | no
a | 1
b | 3
c | 4
Затем я делаю ЕСТЕСТВЕННОЕ ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ следующим образом:
SELECT no
FROM A NATURAL FULL OUTER JOIN
B;
Тогда каков результат? Одинаков ли результат для всех реализаций PostgreSQL?
Поскольку «нет» исходит от таблицы А или таблицы Б, это двусмысленно. Но ЕСТЕСТВЕННЫЕ соединения сочетают в себе «нет». Но что, если одно из «нет» неоднозначно, т. е. A.no НЕ НУЛЕВОЕ, а B.no IS NULL, какое из «нет» он выбирает? А что, если A.no и B.no оба равны NULL?
TL;DR: Итак, вопрос в том, КАКОЕ значение нет в SELECT no: это A.no или B.no, или это их СОВЕЩАНИЕ?
SELECT no
FROM A NATURAL FULL OUTER JOIN
B;