【发布时间】:2011-01-20 00:50:06
【问题描述】:
我有 2 个选择语句,返回的数据如下:
Select 1
col_a col_b
Select 2
col_a col_c
如果我做联合,我会得到类似的东西
col_a col_b
并且行加入。我需要的是这样:
col_a col_b col_c
加入col_a中的数据
【问题讨论】:
标签: sql join select subquery alias
我有 2 个选择语句,返回的数据如下:
Select 1
col_a col_b
Select 2
col_a col_c
如果我做联合,我会得到类似的东西
col_a col_b
并且行加入。我需要的是这样:
col_a col_b col_c
加入col_a中的数据
【问题讨论】:
标签: sql join select subquery alias
使用完全外连接:
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
【讨论】:
COALESCE(a.col_a, b.col_a) AS col_a 之类的内容。
使用 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 table1.col_a, table1.col_b, table2.col_c
FROM table1
INNER JOIN table2 ON table1.col_a = table2.col_a
【讨论】:
LEFT JOIN或RIGHT JOIN,如果在table1.col_a = table2.col_a的左侧或右侧的Tables中有行