T-SQL JOIN中的'SUB'?

时间:2016-09-06 16:56:53

标签: sql-server tsql join

我正在尝试更新客户端的查询,以便在MS-SQL Server 2014数据库上添加更多功能。该查询是由其他人编写的,目前正在运行。

查询的FROM部分包含以下内容:

 FROM Project Phs
        LEFT JOIN (SELECT * FROM Stage WHERE Status >=5 ) SUB 
            ON pmsProject = phs.prjPhase
        LEFT JOIN InvoiceGroup ON phs.prjInvoiceGroup = igKey
        LEFT JOIN Vec  ON vecKey = igClient
        LEFT JOIN Project Prj ON Prj.prjkey = Phs.prjproject
        LEFT JOIN Contact ON prj.prjClientContact1 = cntkey
        LEFT JOIN Project L2 ON L2.prjkey = phs.prjPhaseLevel2

第2行的SUB做什么?

我在SUB文档中找不到JOINSUB不是T-SQL中的保留字,SUB没有出现在其他地方(300行)查询。感谢。

2 个答案:

答案 0 :(得分:3)

Sub只不过是一个表别名,可以从中引用阶段表中的列。

联接可以写成sub.pmsProject=phs.prjphase

它类似于项目的phs和项目的prj。

舞台表中的所有字段都可以作为sub.fieldname引用。当表具有相同名称的字段时,这是必要的,因此引擎明确知道要从哪个表访问数据。

别名不仅使代码更容易,而且使代码更容易阅读,而不是长时间绘制表名。

答案 1 :(得分:3)

这只是(SELECT * FROM Stage WHERE Status >=5 )子查询的别名,以便稍后可以引用它。我没有在您提供的查询中的任何其他地方看到它被引用,但您可能已经删除了包含它的部分,或者它可能已被删除。