CREATE TABLE merged AS
SELECT A.a,A.b,B,B.c FROM
tabletwo A LEFT JOIN tableone USING (a);
Сначала я выбрал tabletwo, потому что он имеет все необходимые ключи
Конечно, поскольку у tabletwo есть все клавиши, это идеальный случай.
Используя теорию множеств, что если вы делаете, если пересечение клавиш Tableone и ключей Tabletwo не совпадает со всеми ключами Tableone или всех ключей TabletW? Сделайте это:
CREATE TABLE merged AS
SELECT
A.a,B.b,C.c
FROM
(
SELECT a FROM tableone
UNION
SELECT a FROM tabletwo
) A
LEFT JOIN tableone B USING (a)
LEFT JOIN tabletwo C USING (a);
Встроенный SELECT A имеет все объединенные ключи как набор UNION.
Любая строка из B, пропускающая что-то из C, получает пустой столбец для этой пропущенной записи из C.
Любая строка из C, в которой что-то отсутствует, B получает столбец NULL для этой отсутствующей записи из B.