我正在维护一些代码,其中在对Sybase数据库查询时使用了*=运算符,但我找不到相关文档。有人知道*=的作用吗?我猜它是某种连接操作。
select * from a, b where a.id *= b.id
我无法弄清楚这与以下内容有何不同:
select * from a, b where a.id = b.id
内部表和外部表
“外部表”和“内部表”这两个术语用于描述外连接中的表格放置:
在左连接中,“外部表”和“内部表”分别是左表和右表。也可以把“外部表”和“内部表”分别称为保留行和提供空值表。
在右连接中,“外部表”和“内部表”分别是右表和左表。
例如,在下面的查询中,T1是外部表,T2是内部表:
或者,使用Transact-SQL语法:
*= is LEFT JOIN and =* is RIGHT JOIN.
当然,你应该这样编写:
SELECT *
FROM a
LEFT JOIN b ON b.id=a.id
语法是有问题的。
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
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 的记录,那么将使用 null 值填充 b 表的列。