我正在尝试构建一个select查询,该查询基本上会将两个表连接起来,并将每个表中的一列显示为单个列。
表结构类似于:
表a:
id, email
表b:
id, tablea_id, email
我正在尝试获取一列电子邮件和电子邮件(理想情况下没有欺骗或空值)。
理想的结果将是:
one@one.com
two@two.com
three@three.com
并且返回的电子邮件地址可以来自a或b。
也许联盟是最有效的,但我无法根据第一个表的id弄清楚如何在第二个表上建立联合。
在寻找解决方案时,也许我的措辞不好,但我找不到任何例子。
感谢您的帮助。
答案 0 :(得分:4)
看起来你想要的东西就是这样:
SELECT email
FROM TableA
UNION
SELECT B.email
FROM TableA A
JOIN TableB B
ON A.id = B.TableA_id
答案 1 :(得分:1)
如果您只想从两个表格中获得唯一的电子邮件地址列表,您可以这样做:
Select email
From TableA
Union
Select email
From TableB
如果您正在寻找表B中存在的唯一电子邮件地址列表以及表B中存在的表A中的电子邮件地址列表,那么您可以这样做:
Select TableA.email
From TableA
Join TableB
On TableB.TableA_id = TableA.id
Union
Select email
From TableB
根据您的评论,如果您需要表A中的所有行,并且只需要来自表B中表A中存在的行:
Select email
From Table A
Union
Select TableB.email
From TableB
Join TableA
On TableA.id = TableB.TableA_id
答案 2 :(得分:0)
这个怎么样:
SELECT DISTINCT a.email+ ' ' + b.email FROM tableA a LEFT JOIN tableB b on a.Id = b.tablea_Id WHERE b.email IS NOT NULL
答案 3 :(得分:0)
这可能有所帮助:
SELECT
id, email
FROM
a
UNION
(
SELECT
a.id AS id, b.email AS email
FROM
b
INNER JOIN
a
ON
a.id = b.tablea_id
) b