gpt4 book ai didi

sql - Oracle,LEFT OUTER JOIN 不返回左表中的所有行,而是表现得像 INNER JOIN

转载 作者:行者123 更新时间:2023-12-04 18:26:20 26 4
gpt4 key购买 nike

我正在做一个左外连接,并且只返回匹配的行,就像它是内连接一样。

为了简化数据,我的第一个表(ROW_SEG)或左表如下所示:

ASN | DEPT NO
-----------------------
85 | 836
86 | null
87 | null

我的第二个表 (RF_MERCHANT_ORG) 有 DEPT_NAME,以及当我有部门编号时我想得到的一些其他东西。
DEPT NO | DEPT_NAME
-----------------------
836 | some dept name 1
837 | some dept name 2
838 | some dept name 3

在这种情况下,在我加入后,对于具有 DEPT NO 的 ASN 85,我只会得到 1 行。
...omitting a bunch of SQL for simplicity

, ROW_SEG AS (
SELECT *
FROM VE_SI_EC_OI
WHERE ROW_NUM BETWEEN 1 AND 1000 -- screen pagination, hardcoding values
)

-- ROW_SEG has a count of 1000 now

, RFS_JOIN AS (
SELECT ROW_SEG.*
,MO.BYR_NO
,MO.BYR_NAME
,MO.DEPT_NAME
FROM ROW_SEG
LEFT OUTER JOIN RF_MERCHANT_ORG MO
ON ROW_SEG.DEPT_NO = MO.DEPT_NO
WHERE MO.ORG_NO = 100
)
SELECT * FROM RFS_JOIN; -- returns less than 1000

我只取回等于具有部门编号的行数的行数。因此,在我上面的小数据示例中,我只会为 ASN 85 获得 1 行,但我希望所有带有 BYR_NO、BYR_NAME 和 DEPT_NAME 的行都填充在我有 DEPT_NO 的行上,如果没有,则为空/空列。

最佳答案

如果 ORG_NO 在 RF_MERCHANT_ORG 表中(一致地使用别名会有所帮助),那么像内部联接一样操作将是正在使用的 SQL 的正确结果。

连接应该是这样的,使它像一个适当的左连接:

LEFT OUTER JOIN RF_MERCHANT_ORG MO ON ROW_SEG.DEPT_NO = MO.DEPT_NO AND MO.ORG_NO = 100

关于sql - Oracle,LEFT OUTER JOIN 不返回左表中的所有行,而是表现得像 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27302670/

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