gpt4 book ai didi

sql - LEFT OUTER JOIN(给出额外的行)问题

转载 作者:行者123 更新时间:2023-12-04 02:39:25 25 4
gpt4 key购买 nike

我有两个表,我想使用左外连接将它们连接在一起。但是,即使我的左表只包含唯一值,右表也不止一次满足条件,因此向结果集中添加了额外的行。

复制问题的代码:

声明@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 external join @tb2 ON c1 = c2

插入@tb2 值 (3)
插入@tb2 值 (4)
插入@tb2 值 (5)
插入@tb2 值 (6)

select * from @tb1 left external 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

最佳答案

对不起,但你的想法是歪曲的。

这样想一想:如果您只希望 tb2 中的一行用于 tb1 中的每一行,那么服务器应该选择哪一行?事实是,根据连接的定义,右侧表中与左侧行匹配的每一行都是匹配项,必须包括在内。

在连接之前,您必须确保 tbl2 具有不同的 c2 值。 Murph 的建议可能会这样做,前提是您的 SQL 变体支持 DISTINCT [column](并非所有人都支持)。

关于sql - LEFT OUTER JOIN(给出额外的行)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1713932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com