【问题标题】:SQL *= statement (outer join)SQL *= 语句(外连接)
【发布时间】:2012-07-10 15:26:13
【问题描述】:

目前,我正在将 VB6 转换为 VB.NET。 转换后,我想在 SQL 中插入/选择 但我需要知道我的sql语句是什么意思。

我的声明:

XXX  where  adj.reasonid *=  re.reasonid and (status <> 'A'OR action = 'H')

有人知道 *= 是什么意思吗?和

in (status &lt;&gt; 'A'OR action = 'H') 是否意味着任一条件都可以选择数据?

【问题讨论】:

  • 对于第二个:是的,如果 status 不是 A 或 action 是 H,它将返回数据。此条件的工作原理如下,(1 - true, 0 - false) 1 or 1 = 1 | 1 or 0 = 1 | 0 or 1 = 1| 0 or 0 = 0 跨度>
  • 非常感谢,我现在明白了=]

标签: mysql sql-server vb.net vb6 sybase


【解决方案1】:

*= 是左外连接的替代(我相信已过时)语法。

【讨论】:

  • 当然可以。随意对有用的答案进行投票,并接受您认为正确的答案。
【解决方案2】:

这是 sql server 中 Outer Join 的旧语法。

SQL Server 早就支持OUTER JOIN syntax 的两种形式, ANSI syntax (using LEFT OUTER JOIN, RIGHT OUTER JOIN 等), 以及简化的T-SQL syntax (using= 和 =).

http://www.forta.com/blog/index.cfm/2006/1/15/SQL-Server-2005-Outer-Join-Gotcha

在您的代码中。

where  adj.reasonid Left Outer Join re.reasonid 
and (status <> 'A' OR action = 'H')

为了。

in (status <> 'A'OR action = 'H')

OR 运算符只计算表达式,直到找到 TRUE 结果。

【讨论】:

    猜你喜欢
    • 2015-02-20
    • 2010-12-20
    • 2011-03-16
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多