3

*= and =*

我的应用程序查询中的 sql 等式。这是什么意思?我在谷歌上进行了调查,但找不到足够的信息。例如 :

SELECT ODR_YO_ID, OGR_OKUL_NO, OGR_ADI+' '+OGR_SOYADI OGR, COUNT(ODR_YO_ID) SAYI
FROM OGRENCI,YIL_SUBE,YIL_OGRENCI, OGRENCI_DAVRANIS 
WHERE  ODR_OLUMLU = 1 AND YO_OGR_ID = OGR_ID AND  ODR_YO_ID = YO_ID AND YO_AKTIF = 1 AND 
YO_YSB_ID = YSB_ID AND  YSB_ID = 2183 AND YSB_YIL_KOD *= ODR_YIL_KOD AND  ODR_OGR_ID =* OGR_ID  
GROUP BY ODR_YO_ID, OGR_OKUL_NO, OGR_ADI+' '+OGR_SOYADI, YO_OKUL_DEGIS_TARIHI 
ORDER BY OGR

当我在本地计算机上执行此 sql 查询时,出现此错误:

 Msg 102, Level 15, State 1, Line 5
 Incorrect syntax near '*='.

但是我在相关服务器上运行相同的查询,这个查询没有任何错误。我在本地计算机上使用 sql server 2012 express edition,相关服务器中有 sql server 2005。为什么 ?提前致谢。

4

1 回答 1

3

*=是左连接的 ANSI-89 语法。它现在已被弃用,这就是您收到错误的原因。

同样=*类似于右连接。

您需要将连接子句从where子句移动到连接语法,但不知道字段来自哪些表,我不能更具体

IE

YSB_YIL_KOD *= ODR_YIL_KOD 

变成

ysbtable 
    left join odrtable 
        on YSB_YIL_KOD = ODR_YIL_KOD 

ODR_OGR_ID =* OGR_ID

变成

odrtable 
    right join ogrtable
        on ODR_OGR_ID = OGR_ID

您可以通过更改数据库兼容性级别(http://technet.microsoft.com/en-us/library/bb510680.aspx)使查询在本地计算机上工作,但我建议将其重写为当前语法.

于 2013-09-21T08:52:49.420 回答