Chinaunix

标题: SQL问题急!!! [打印本页]

作者: seapen    时间: 2002-01-30 12:42
标题: SQL问题急!!!
select * from a, b where a.id *= b.id

请问上句中,\"*=\"是什么意思?和直接用\"=\"有什么区别?
作者: zhuzhichao    时间: 2002-01-30 12:55
*=是MSSQL中的左连接.
MS已經声称在以后的版本中这种写法有可能不将支持.

还有一种写法是:
select * from a left join b on (a.id = b.id);

左连接和直接用\"=\"的区别是:
以左边的表作为主表.主表中的纪录即使和右边的表关联不上也会出现在结果集中.

假设a的结构和纪录为
id   a2
1        zzc1
2        zzc2
3        zzc3
4        zzc4

b的结构和纪录为
id        b2
1        seapen1
2        seapen2

那么
select * from a,b where a.id = b.id;
结果集是:
id                a2                id                b2
1                zzc1                1                seapen1
2                zzc2                2                seapen2

而select * from a,b where a.id *= b.id;
结果集是:
id                a2                id                b2
1                zzc1                1                seapen1
2                zzc2                2                seapen2
3                zzc3                null                null
4                zzc4                null                null


作者: biti_rainy    时间: 2002-02-02 14:19
标题: 还是
+=   或者  =+  形象
呵呵
作者: gnzhao    时间: 2002-02-03 19:04
select * from a,b where a.id *= b.id  该句话在sqlserver 上执行不能后面加分号。看来你对oracle 比较熟悉。


select * from a left join b on a.id = b.id  这种语句是ANSI语法,不管在那里执行都可以。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2