* =在Sybase SQL中

时间:2020-03-05 18:46:45  来源:igfitidea点击:

我正在维护一些在对Sybase数据库的查询中使用* =运算符的代码,但找不到有关它的文档。有人知道* =做什么吗?我认为这是某种联接。

select * from a, b where a.id *= b.id

我不知道这与以下内容有何不同:

select * from a, b where a.id = b.id

解决方案

回答

它表示外部连接,简单=表示内部连接。

*= is LEFT JOIN and =* is RIGHT JOIN.

(反之亦然,由于我不再使用它,因此我一直在忘记它,并且Google在搜索* =时没有帮助)

回答

从http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm:

内表和外表

术语外部表和内部表描述了表在外部联接中的位置:

  • 在左联接中,外部表和内部表分别是左表和右表。外部表和内部表也分别称为行保留表和空值提供表。
  • 在右连接中,外部表和内部表分别是右表和左表。

例如,在下面的查询中,T1是外部表,T2是内部表:

  • T1左加入T2
  • T2右加入T1

或者,使用Transact-SQL语法:

  • T1 * = T2
  • T2 = * T1

回答

当然,我们应该这样写:

SELECT *
FROM a
LEFT JOIN b ON b.id=a.id

a,b语法很邪恶。

回答

select * from a, b where a.id = b.id

要求其中b.id = a.id存在一行以返回答案

select * from a, b where a.id *= b.id

当b中没有一行(其中b.id = a.id)时,将用b的列填充空值。

回答

ANSI-82语法

select 
    * 
from 
    a
  , b 

where 
     a.id *= b.id

ANSI-92

select 
    * 
from 
   a
  left outer join b 
      on a.id = b.id