sql中逗号是不是相当于笛卡尔积,另外逗号和join的关系,他们两个是不是一个概念。求高手!!
例如: select * from a,b where a.id=b.id;这里的逗号是不是就相当于笛卡尔积?
select * from a join b on a.id= b.id;这里的join是不是和上面的逗号一样的意思?
例如: select * from a,b where a.id=b.id;这里的逗号是不是就相当于笛卡尔积?
select * from a join b on a.id= b.id;这里的join是不是和上面的逗号一样的意思?
hr@ORCL> select * from p; ID TEST
---------- -----
1 e
2 f
3 ghr@ORCL> select * from t; ID NAME
---------- -----
1 a
2 b
3 c
4 c
5 b来回答你的第一个问题
hr@ORCL> select p.id,t.id,test,name from p,t where p.id=t.id; ID ID TEST NAME
---------- ---------- ----- -----
1 1 e a
2 2 f b
3 3 g c所以,这里的逗号不是笛卡尔积。如果是笛卡尔积应该是3*5=15才对哦。要出现15行才对哈。你只要把where子句去掉,这里的逗号就是在作笛卡尔积哈。
接下来回答你的第二个问题。
hr@ORCL> select p.id,t.id,test,name from p join t on p.id=t.id; ID ID TEST NAME
---------- ---------- ----- -----
1 1 e a
2 2 f b
3 3 g c可见,这里的join和上面的逗号是一样的意思。
left join,左表数据多于右表
right join,与left join相反
full join,即是left join和right join的并集