我可以在不返回条件列的情况下进行左连接吗?

时间:2016-08-10 17:54:25

标签: sql sql-server

SQL新手,但我希望能够通过提供适量的数据来优化我的查询。我正在CS Rep Name和WE上进行左连接,这两个表中都有两列。我发现如果我没有在TECDR表中引入CS Rep Name和WE,则查询会出错。这有解决方法吗?由于它是左连接,我不需要冗余数据。

SELECT *
FROM   Tish_Email_CSAT_Dump AS TECD
       LEFT JOIN (SELECT CS_Rep_Name,
                         Team_Leader,
                         Operations_Manager,
                         Tenure,
                         WE,
                         FileName
                  FROM   Tish_Email_CSAT_Dump_Roster) AS TECDR
         ON TECD.CS_Rep_Name = TECDR.CS_Rep_Name
            AND TECD.WE = TECDR.WE 

3 个答案:

答案 0 :(得分:3)

当您在查询中嵌入SELECT代替表时,select(投影)的结果就像只在查询中可见的表一样。

在您的情况下,连接与具有您选择的列的名为TECDR的表相同。因此,如果您从Tish_Email_CSAT_Dump_Roster中遗漏了SELECT的某些列,则这些列将无法加入或选择。

但是,在您的情况下,这是不必要的:您需要做的就是加入基础表,如下所示:

SELECT
    TECD.*
,   TECDR.Team_Leader
,   TECDR.Operations_Manager
,   TECDR.Tenure
,   TECDR.FileName
FROM Tish_Email_CSAT_Dump AS TECD
LEFT JOIN Tish_Email_CSAT_Dump_Roster AS TECDR
       ON TECD.CS_Rep_Name = TECDR.CS_Rep_Name AND TECD.WE = TECDR.WE

答案 1 :(得分:2)

select 
  <place the columns you want here>
from 
  Tish_Email_CSAT_Dump as TECD
  Left join Tish_Email_CSAT_Dump_Roster as TECDR 
    On TECD.CS_Rep_Name = TECDR.CS_Rep_Name and TECD.WE = TECDR.WE

答案 2 :(得分:1)

希望以下有用,否则请分享错误的查询:

  

选择TECD.Column1,TECD.Column2,TECDR.Column1,TECDR.Column2   从Tish_Email_CSAT_Dump作为TECD   左连接Tish_Email_CSAT_Dump_Roster作为TECDR   在TECD.CS_Rep_Name = TECDR.CS_Rep_Name和TECD.WE = TECDR.WE