SQL一個外連接查詢的理解

一個查詢的理解:
 
create table ua (
    id int not null primary key,
    name varchar(90)
);
create table ub (
    id int not null primary key,
    name varchar(90)
);
 
insert into LIUJSH.UA (ID, NAME) values (1, 'a1');
insert into LIUJSH.UA (ID, NAME) values (2, 'b1');
insert into LIUJSH.UA (ID, NAME) values (3, 'c1');
insert into LIUJSH.UB (ID, NAME) values (1, 'a');
insert into LIUJSH.UB (ID, NAME) values (2, 'b');
insert into LIUJSH.UB (ID, NAME) values (3, 'c');
 
select * from ua a left join ub b on a.id=b.id where a.id=1;


select * from ua a left join ub b on a.id=b.id and a.id=1 ;


select * from ua a left join ub b on a.id=b.id and b.id=1;


select * from ua a left join ub b on a.id=1;


select * from ua a left join ub b on 1=1;


 
以上5個SQL均可以正常查出數據,實驗結論:
1. *  可以含有重複的列名
2. on 和 where 中的連接條件(無論是否帶括號),都是用作連接條件(同時也可以是過濾條件)
3. where 後的過濾條件,僅是在連接後做的過濾。
4. on a.id=1 僅使用a.id=1做連接ub,(其他ua爲外連接)
5. on 1=1 做笛卡爾積
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章