我正在维护一些在对 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
a,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
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 中的列。