【发布时间】:2010-12-15 09:31:01
【问题描述】:
我有两个表,我想使用左外连接将它们连接在一起。然而,即使我的左表仅包含唯一值,右表也不止一次满足 CONDITION,因此,向结果集中添加了额外的行。
复制问题的代码:
声明@tb1 表(c1 int) 声明@tb2 表(c2 int) 插入@tb1 值 (1) 插入@tb1 值 (2) 插入@tb1 值 (3) 插入@tb1 值 (4) 插入@tb2 值 (3) 插入@tb2 值 (4) 插入@tb2 值 (5) 插入@tb2 值 (6) select * from @tb1 left outer join @tb2 ON c1 = c2 插入@tb2 值 (3) 插入@tb2 值 (4) 插入@tb2 值 (5) 插入@tb2 值 (6) select * from @tb1 left outer join @tb2 ON c1 = c2如您所见,第一个 SELECT 返回 4 行,第二个 SELECT 返回 6 行,尽管左表保持不变。
如何对左表保持严格,只使用右表补充左表中的行?
帮助!
结果: c1 c2 ------------ ------------ 1 空 2 空 3 3 4 4 [重复@tb2 记录] c1 c2 ------------ ------------ 1 空 2 空 3 3 3 3 4 4 4 4【问题讨论】:
-
我有一个包含多个非不同行(登录日志)的表,我的左表是按用户 ID 分组的表,因此它是不同的。右表是原始表,其中包含我需要的数据。因此,我使用 USERid 将右表链接到左表,以便我可以返回有用的数据