* =在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