【发布时间】:2016-03-25 09:09:30
【问题描述】:
我有以下 SQL Server 2000 查询:
select distinct
m.[Index], m.part as [Part No]
from
Ctable c, MTable m
where
m.part *= c.part
这是对应的 SQL Server 2012 查询吗?
select distinct
m.[Index], m.part as [Part No]
from
Ctable c
right join
MTable m on m.part = c.part
所以基本上 Asterisk= 是左连接而 =Asterisk 是右连接?由于 MTable 是 2012 查询中的正确表,因此我必须对上述查询进行右连接。请指教。
【问题讨论】:
-
你能改进你的标题吗?使其提供问题的摘要,并且不要在标题中包含标签。
-
确定我编辑了标题
-
这与其说是 SQL 2000 与 SQL 2012 的区别,不如说是 ANSI JOIN 语法的不同。我不熟悉
*=或=*语法的细微差别而不查找它,但是您的第二个查询是“当前”连接语法,据我所知,它适用于任何可追溯到 2000 年的 SQL Server。更多信息请看这里:stackoverflow.com/questions/1599050/… -
这是非常古老的左右连接语法。该连接语法已被 ANSI-89 弃用,不再受支持。大多数人倾向于做左连接并以这种方式思考。您的右连接似乎是正确的,或者您可以通过将 MTable 设置为 CTable 的 from 和 left 连接来将其移动到左连接。
标签: sql sql-server sql-server-2012 sql-server-2000