【问题标题】:SQL Multiply Equals (*=) in a WHERE clause [duplicate]WHERE 子句中的 SQL 乘等于 (*=) [重复]
【发布时间】:2014-05-03 07:52:15
【问题描述】:

我刚刚在我们拥有的一些非常古老的 SQL 代码中看到了最奇怪的东西。

where 子句中有一个乘等于运算符。它有什么特殊含义吗?它选择适当的列,但o.nameNULL

我确定这是一个错字,但我只是想确认一下。

select  c.name,
        c.status,
        o.name
from    syscolumns c,
        sysobjects o
where   c.id = object_id('dbo.MyTable')
and     c.cdefault *= o.id
order by colid asc

【问题讨论】:

  • 这是写左连接的老式方法。
  • 抱歉重复的问题。谷歌搜索“*=" 等特殊字符真的很困难
  • 搜索“*=”(带引号)适用于 SO,但不适用于 google。下次我会试试的。

标签: sql


【解决方案1】:

这里已经回答了这个问题:SQL Server *= Operator?

正如fancyPants 提到的那样,除了老式的方式之外,它也可能并不总是始终如一地工作。您应该修改您的 SQL 语句以在 FROM 子句中包含 JOINS。

回答您的问题:*= 是左外连接,而 =* 是右外连接

【讨论】:

    【解决方案2】:

    如前所述,这是LEFT OUTER JOIN。同样,=* 是RIGHT OUTER JOIN

    也就是说,它不应该再使用了,你应该使用完整的语法。

    【讨论】:

      【解决方案3】:
      *= (LEFT OUTER JOIN)
      
      =* (RIGHT OUTER JOIN)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 2017-08-30
        • 1970-01-01
        • 2013-04-03
        • 1970-01-01
        • 1970-01-01
        • 2020-06-06
        相关资源
        最近更新 更多