Sql 非法使用外部联接运算符错误

Sql 非法使用外部联接运算符错误,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我已尝试将旧的ANSI MS sql联接语法转换为新联接语法,但结果中的行数不匹配。我已尝试querydesigner验证sql语法选项,并收到非法使用外部联接运算符的错误消息 我尝试了下面的sql,但结果行数不匹配 Select TableA.DATA1,TableB.DATA2 from TableA LEFT OUTER JOIN TableB ON TableA.SEQUENCE = TableB.SEQUENCE and TableA.CSequence = Tabl

我已尝试将旧的ANSI MS sql联接语法转换为新联接语法,但结果中的行数不匹配。我已尝试querydesigner验证sql语法选项,并收到非法使用外部联接运算符的错误消息

我尝试了下面的sql,但结果行数不匹配

Select TableA.DATA1,TableB.DATA2  
from TableA  
LEFT OUTER JOIN TableB 
  ON TableA.SEQUENCE = TableB.SEQUENCE 
 and TableA.CSequence = TableB.CSequence

来自OP的查询是同一个查询

*
表示要保留的边,它是tableA边,因此它相当于
tableA左连接TableB

下面是测试:

关注第二个查询。预期结果与实际结果是什么?=*是右连接的旧语法,而不是左连接。翻转表格并保持左连接或在此处使用右连接,不是左连接。对于@SeanLange这两个版本,我得到了完全相同的计划,因为它们编写了
TableB.Sequence=*TableA.Sequence和TableB.CSequence=*TableA.CSequence
not
TableA.Sequence=*TableB.CSequence和TableA.CSequence=*TableB.CSequence
它们都很好。这是表B右连接A-这与左连接B相同。@chandralal你能给我们一个发生这种情况的A:B中的样本数据集吗(也许运行两个函数,找到省略的记录并将其用作示例?)
Select TableA.DATA1,TableB.DATA2  
from TableA  
LEFT OUTER JOIN TableB 
  ON TableA.SEQUENCE = TableB.SEQUENCE 
 and TableA.CSequence = TableB.CSequence