使用而不是ON

时间:2013-08-30 07:45:08

标签: sql-server

我正在查看关于LEFT JOIN的“SQL标准指南”(C.J.Date/Hugh Darwen)的一节,它给出了以下语法:

table-reference [ NATURAL ] outer-join-type
                            JOIN table-reference
                           [ ON conditional-expression   
                           | USING ( column-commalist ) ]

什么是USING
有用吗?
它是在SQL-Server中实现的吗?

2 个答案:

答案 0 :(得分:4)

不,SQL Server不支持它,请参阅FROM

<joined_table> ::= 
{
    <table_source> <join_type> <table_source> ON <search_condition> 
    | <table_source> CROSS JOIN <table_source> 
    | left_table_source { CROSS | OUTER } APPLY right_table_source 
    | [ ( ] <joined_table> [ ) ] 
}

至于它是什么?这是一种在两个表之间执行连接的方法,其中两个表中的列名完全匹配,并且为方便起见,它允许您仅将列命名一次。与使用ON来实现相同:

ON
   table1.columnA = table2.columnA AND
   table1.columnB = table2.columnB AND
   table1.columnC = table2.columnC

USING只是:

USING (columnA,columnB,columnC)

答案 1 :(得分:3)

不,SQL Server(或Sybase)不支持联接的USING子句。您需要继续使用ON条款。

在MSDN上有一个请求让它实现here - 但是正如2006年建议但尚未实现的那样,我不会屏住呼吸!