標籤:卡爾 查詢 條件 必須 右串連 不等值串連 查詢條件 笛卡爾積 左外串連
多表查詢需要用到表的串連
串連可以分為:(自行百度)
交叉串連(數字邏輯的笛卡爾積,不做解釋)
等值串連
例如:select * from t_a, t_b where t_a.xx = t_b.xx
不等值串連
例如:select * from t_a, t_b where t_a.sal >= t_b.sal
內串連
例如:select * from t_a inner join t_b on t_a.xx = t_b.xx
內串連寫法和等值串連不同,但是效果是一樣的,所以隨意使用一種即可。
左外串連(左串連)
內串連是把非空的行給串連在一起,形成一個新表。而左串連是以第一張表為基礎,把合格欄位補充到第一張表上。
語句:
標準寫法:select * from t_a inner left join t_b on t_a.xx = t_b.xx;
Oracle自創:select * from t_a, t_b where t_a.xx = t_b.xx(+);
右外串連(右串連)
與右串連一樣,方向反過來。
select * from t_a, t_b where t_a.xx(+) = t_b.xx;
自串連
自身與自身相串連
例如:select * from t_a, t_a t_a2 where t_a.xx = t_a2.yy;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
子查詢(當查詢條件為不確定值時必須使用子查詢)
可以分為:
常規子查詢:
先執行子查詢,然後執行主查詢,子查詢參數與主查詢無關。
例如:select * from users where salary > (select avg(salary) from users)
相互關聯的子查詢:
主查詢的某些條件當作參數傳入子查詢,然後執行查詢。
例如:select * from users u where salary > (select avg(salary) from users where u.部門 = users.部門 order by 部門)
Oracle子查詢和多表查詢