两表基于含null值的UIN字段关联 如何保留表A中UIN为null的记录
你之前的关联操作丢失Table-A中UIN为null的记录,通常是使用了内连接,或是在左连接后添加了涉及Table-B字段的非空过滤条件导致的,可按以下方案实现需求:
实现方案
使用**左外连接(LEFT JOIN)**即可保留左表(Table-A)的全部记录,包括UIN为null的行,关联不到右表的字段会自动填充null值,示例SQL如下:
SELECT -- 按需选择字段,最终对齐Table-C的输出格式即可 A.UIN, A.其他Table-A需要输出的字段, B.需要从Table-B取的字段 FROM Table-A A LEFT JOIN Table-B B ON A.UIN = B.UIN;
注意事项
- 不要在
WHERE子句中添加B.UIN IS NOT NULL这类过滤规则,否则会把Table-A中UIN为null的记录过滤掉,效果等同于内连接。 - 如果需要对Table-B的内容做过滤,要把过滤条件写在
ON子句中,而非WHERE子句中。比如仅需要关联Table-B中状态为有效的记录,写法如下:
SELECT A.*, B.* FROM Table-A A LEFT JOIN Table-B B ON A.UIN = B.UIN AND B.status = '有效';
内容的提问来源于stack exchange,提问作者room
相关产品推荐
相关产品推荐

