Sql server 内部联接不返回任何内容,而左侧外部联接返回NULL-SQL Server
当我使用内部联接时,这个查询根本不返回任何内容,但是当我将其更改为左外部联接时,会得到一个空值Sql server 内部联接不返回任何内容,而左侧外部联接返回NULL-SQL Server,sql-server,Sql Server,当我使用内部联接时,这个查询根本不返回任何内容,但是当我将其更改为左外部联接时,会得到一个空值 SELECT RMDET.CUST_CODE, OHORDER.SHIP_TO_NAME, RMDET.TRAN_REF_NO, RMDET.TRAN_DATE, RMDET.T
SELECT RMDET.CUST_CODE,
OHORDER.SHIP_TO_NAME,
RMDET.TRAN_REF_NO,
RMDET.TRAN_DATE,
RMDET.TRAN_AMT
FROM RMDET (NOLOCK)
LEFT OUTER JOIN OHORDER (NOLOCK) ON OHORDER.ORDER_NO = RMDET.TRAN_REF_NO
WHERE RMDET.TRAN_AMT_APPLIED = 0
ORDER BY RMDET.CUST_CODE
输出:
CUST_CODE SHIP_TO_NAME TRAN_REF_NO TRAN_DATE TRAN_AMT
------------------------------------------------------------------------
101 NULL 5181 2020-02-13 30.21
101 NULL 5593 2020-02-18 102.07
106 NULL 232793 2019-10-25 66.19
107 NULL 5476 2020-02-17 345.00
107 NULL 3230 2020-01-20 194.00
它应该显示“AC Hotel”,它是101而不是NULL,以此类推。OHORDER.ORDER_NO和RMDET.TRAN_REF_NO是主键,但我认为问题可能是表中的列不相关。我怎么检查
以下是来自RMDET的数据:
CUST_CODE TRAN_REF_NO TRAN_TYPE TRAN_DATE TRAN_AMT TRAN_AMT_APPLIED
101 5181 I 2020-02-13 30.21 0.00
从OHORDER:
ORDER_NO CUST_CODE SHIP_TO_CODE SHIP_TO_NAME
5181 101 S AC HOTEL
有更多的列,但它们与查询无关。那么问题可能在于您的数据。请显示
RMDET
和OHORDER
中的一些示例数据。我认为问题可能是表中的列不相关。如果表中的列不相关,您希望任何类型的联接如何正常工作?您能提供两个表中的示例数据吗?一切正常,内部联接检索一行,左联接检索同一行,仔细检查表的结构是否相似?OHORDER.ORDER\U NO和RMDET.TRAN\U REF\U NO的数据类型是什么?