Объединение двух наборов результатов SQL SELECT в один

У меня есть два оператора select, возвращающие данные следующим образом:

Выберите 1 col_a col_b

Выберите 2 col_a col_c

Если я делаю союз, я получаю что-то вроде col_a col_b

И соединяются строки. Мне нужно, чтобы это было так: col_a col_b col_c

Зарегистрировать данные в col_a.

3 ответа

Используйте JOIN для присоединения к подзапросам и используйте ON, чтобы указать, где должны соответствовать строки из каждого подзапроса:

SELECT T1.col_a, T1.col_b, T2.col_c
FROM (SELECT col_a, col_b, ...etc...) AS T1
JOIN (SELECT col_a, col_c, ...etc...) AS T2
ON T1.col_a = T2.col_a

Если есть несколько значений col_a, которые находятся в T1, но не в T2, вместо этого вы можете использовать LEFT OUTER JOIN.


Используйте ПОЛНУЮ ВНУТРЕННУЮ РАБОТУ:

select 
 a.col_a,
 a.col_b,
 b.col_c
from
 (select col_a,col_bfrom tab1) a
join 
 (select col_a,col_cfrom tab2) b 
on a.col_a= b.col_a


SELECT table1.col_a, table1.col_b, table2.col_c 
 FROM table1 
 INNER JOIN table2 ON table1.col_a = table2.col_a

licensed under cc by-sa 3.0 with attribution.