Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server左联接未给出正确的结果_Sql_Sql Server_Select_Join_Left Join - Fatal编程技术网

SQL Server左联接未给出正确的结果

SQL Server左联接未给出正确的结果,sql,sql-server,select,join,left-join,Sql,Sql Server,Select,Join,Left Join,你好 我已经读到了人们在使用左连接时面临的一些其他问题,没有给出正确的结果,也许我没有很好地理解所有的答案 这就是我的问题所在 SELECT TA.column1 ,D.column2 ,D.column3 ,TA.column4 ,MI.[column5] ,MI.[column6] ,D.[column7] ,D.[column8] ,TA.[column9]

你好

我已经读到了人们在使用左连接时面临的一些其他问题,没有给出正确的结果,也许我没有很好地理解所有的答案

这就是我的问题所在

    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条款:

在右表中,我的视图中有3个结果。这是正确的,因为左表中没有写入一个结果

当我放回左外部联接和where子句时,我再次只看到2个结果,如果没有最后一列LD.column27显示为NULL的三个结果的话。 此列将接受NOT NULL这可能是我没有获得首选结果的原因吗?

使用左外部联接而不是完全外部联接,并删除'WHERE LD.coulmn5!=TA.coulmn1]和“部分”

试试这个:

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)
  LEFT 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   (TA.[coulmn23]= '0')
应:

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 is null)
AND
(TA.[coulmn23]= '0')

没有,仍然是一样的,只看到结果中都有数据tables@user3676496您能用示例数据解释一下吗?在查询中,您应该在所有内部联接之后才使用所有左联接以获得正确的结果,另一方面,在左连接之前使用的所有内部连接都将被视为仅左连接。我在删除内部连接[DB1].[dbo].[Table5]后,在查询中发现了为什么它不能正常工作的问题当UC在TA.coulmn12=UC.coulmn3上带有NOLOCK时,当我再次添加数据时,数据就在那里。我没有得到任何结果。这可能是因为我将不同的数据库加入到我的查询中?这是因为数据的性质。尝试更改表5的左连接的内部连接,看看会发生什么。它现在正在工作。它是Dmitry和Saharsh提供的答案的混合体。在我得到DB2连接后,没有给我结果。我删除了WHERE LD.coulmn5为null,只剩下WHERE TA。[coulmn23]=“0”现在数据显示正确。谢谢你们两位的帮助。
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 is null)
AND
(TA.[coulmn23]= '0')