【发布时间】:2014-12-02 07:11:36
【问题描述】:
美好的一天,
我已经阅读了人们在使用左连接时面临的其他一些问题,没有给出正确的结果,也许我没有很好地理解所有的答案。
这是我在查询中遇到的问题
SELECT
TA.column1
,D.column2
,D.column3
,TA.column4
,MI.[column5]
,MI.[column6]
,D.[column7]
,D.[column8]
,TA.[column9]
,TA.[column10]
,UC.[column11]
,UC.[column12]
,TA.[column13]
,TA.[column14]
,TA.[column15]
,TA.[column16]
,TA.[column17]
,'0' AS column18
,TA.[column19]
,'12.2' AS column20
,'None' AS column21
,'0' AS column22
,'1' AS column23
,TA.[column24]
,'0' AS column25
,'0' AS column26
,LD.column27
FROM [DB].[dbo].[Table1] AS TA WITH (NOLOCK)
FULL OUTER JOIN
[DB].[dbo].[Table2] AS LD WITH (NOLOCK)
ON
TA.[coulmn1]=LD.[coulmn5]
INNER JOIN
[DB].[dbo].[Table3] AS MI WITH (NOLOCK)
ON
TA.coulmn10 = MI.[coulmn3]
LEFT JOIN
[DB].[dbo].[Table4] AS D WITH (NOLOCK)
ON
TA.coulmn25 = D.coulmn1
INNER JOIN
[DB1].[dbo].[Table5] AS UC WITH (NOLOCK)
ON
TA.coulmn12 = UC.coulmn3
WHERE
(LD.coulmn5 != TA.[coulmn1])
AND
(TA.[coulmn23]= '0')
问题是当我更新查询并删除时
FULL OUTER JOIN
[DB].[dbo].[Table2] AS LD WITH (NOLOCK)
ON
TA.[coulmn1]=LD.[coulmn5]
以及删除以下 where 子句:
WHERE (LD.coulmn5 != TA.[coulmn1]) AND
我在右表的视图中有 3 个结果。这是正确的,因为一个结果尚未写入左表
当我放回左外连接和 where 子句时,我只能再次看到 2 个结果,如果最后一列 ,LD.column27 显示为 NULL 不会出现三个结果。
本专栏接受NOT NULL 这可能是我没有得到首选结果的原因吗?
【问题讨论】:
-
在查询中,你应该只在所有内连接之后使用所有左连接以获得正确的结果,否则在左连接之前使用的所有内连接将被视为仅左连接。
标签: sql sql-server select join left-join