Объединение столбцов из двух несвязанных таблиц в SQL

Допустим, у меня есть две таблицы

Таблица 1

COl_1 COl_2

1     5
2     6
3     7
4     8

И Таблица 2

COL3    COL4
9      13
10     14
11     15
12     16

Я хочу следующее:

COL_1   COL_2   COL3    COL4
1        5        9     13
2        6        10    14
3        7        11    15
4        8        12    16

Кроме того, число строк в каждой из таблиц в точности одинаково, нет ключевого отношения или целостности.

Любая подсказка?

2 ответа

Вы можете сделать это используя row_number() чтобы добавить ключ "соединение" к двум таблицам:

select t1.col_1, t1.col_2, t2.col_3, t2.col_4
from (select t1.*, row_number() over (order by col_1) as seqnum
      from table1 t1
     ) t1 join
     (select t2.*, row_number() over (order by col_3) as seqnum
      from table2 t2
     ) t2
     on t1.seqnum = t2.seqnum;

Если таблицы имеют разное количество строк, возможно, вы захотите внешнее соединение.

Вы можете добавить идентификационный столбец в качестве альтернативы row_number() следующим образом

alter table Table_1 add id int identity(1,1)
alter table Table_2 add id int identity(1,1)

Затем, используя этот столбец идентификатора, вы можете объединить обе таблицы следующим образом (как предложил LONG FULL JOIN)

select col1, col2, COL3, COL4
from Table_1
full outer join Table_2 on Table_1.id = Table_2.id

С некоторыми дополнительными данными вы можете получить следующие результаты

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