【问题标题】:*= and =* sql operators*= 和 =* sql 运算符
【发布时间】:2013-09-21 05:09:34
【问题描述】:

*= 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。为什么 ? 提前致谢。

【问题讨论】:

  • stackoverflow.com/questions/6269845/…。显然,它在 SQL Server 中用作连接的简写。我实际上从未见过这种情况,这似乎是一场等待发生的事故。也许他们在 2012 年删除了它?
  • @ChicagoRedSox:AFAIK 它们是从 SQL Server 的祖先 Sybase 继承而来的。
  • @muistooshort - 有趣。我主要使用 Oracle 和 MySQL,所以我可能对 SQL Server 的了解还不够。
  • @ChicagoRedSox:我主要使用 PostgreSQL,但我仍在从十多年前由 Sybase 引起的 PTSD 中恢复 :) *= 在以前用于隐式外部连接没有人在 FROM 子句中使用显式连接条件。

标签: sql sql-server sql-server-2005 sql-server-2012-express


【解决方案1】:

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

同样=* 类似于右连接。

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

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) 使查询在本地计算机上工作,但我建议将其重写为当前语法。

【讨论】:

  • 这是左连接还是左外连接?我已经尝试过了,但它不起作用:
  • 选择odr_yo_id,ogr_okul_no,ogr_adi +''+ ogr_soyadi ogr,count(odr_yo_id)yil_ogrenci,yil_sube左外连接(ogrenci_davranis右外连接Odr_ogr_id = ogr_id)ysb_yil_kod = odr_yil_kod 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 GROUP BY ODR_YO_ID, OGR_OKUL_NO, OGR_ADI+' '+OGR_SOYADI, YO_OKUL_DEGIS_TARIHI ORDER BY OGR
  • 左连接和左外连接是同义词。怎么不行?
  • 我在sql server management studio中运行这个查询,但是没有数据。原始查询获得 19 行,但我的查询获得 0 行。
  • @rockenpeace 不知道这些字段来自哪些表,我无法告诉你错误在哪里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2016-01-17
相关资源
最近更新 更多