如何在表A和B上进行左连接,这些表具有公共列但不包含A或B的主键。
公共列可能在两个表中都有一个或多个记录。我想显示表A中的所有行,并从B中提取来自A的那些记录的其他数据。这可能吗?
表A
Column1
1123
1123
1123
2234
2234
3344
表B
Column1
1123
2234
2234
2234
2234
期望输出
A.Column1 B.Column1
1123 1123
1123 1123
1123 1123
2234 2234
2234 2234
3344 NULL
答案 0 :(得分:1)
根据最新评论和期望的结果,此查询应该有效。 需要从TableB获取不同的值,因为存在重复值。
SELECT A.COLUMN1 , B.Column1
FROM TableA A
LEFT JOIN ( SELECT DISTINCT COLUMN1 FROM TableB ) B
on A.Column1 = B.Column1
答案 1 :(得分:0)
您不需要在JOIN
中拥有主键列(但是,由于索引,它通常更快)。只需使用您的公共字段作为加入条件:
SELECT a.field, b.field2
FROM a
LEFT JOIN b
ON b.common = a.common
WHERE a.id = ???
答案 2 :(得分:0)
我不确定您描述的情景有什么特别之处。我错过了什么吗?
SELECT *
FROM TABLEA TA
LEFT JOIN TABLEB TB ON TA.COMMONFIELD = TB.COMMONFIELD
答案 3 :(得分:-1)
select * from A
left outer join B on A.a = B.b