1樓:匿名使用者
可以這樣理解:on是在生成連線表時起作用的,where是生成連線表之後對連線表再進行過濾。
1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。
使用left join時,無論on的條件是否滿足,都會返回左表的所有記錄,對於滿足的條件的記錄,兩個表對應的記錄會連線起來,對於不滿足條件的記錄,那右表欄位全部是null。
2樓:育知同創教育
sql左連線與left join是一個意思。
用資料舉例比較容易理解:
如:表1中有資料
班級id 班級名稱
1 一班
2 二班
表2:學生id 學生姓名 所屬班級id
1 張三 1
2 李四 1
如果查詢每個班級總人數,不用左連線
select a.班級名稱,sum(case when a.班級id=b.
所屬班級id then 1 else 0 end) 人數 from 表1 a,表2 b where a.班級id=b.所屬班級id group by a.
班級名稱
此時結果:
班級名稱 人數
一班 2
如果用左連線
select a.班級名稱,sum(case when a.班級id=b.
所屬班級id then 1 else 0 end) 人數 from 表1 a left join 表2 b on a.班級id=b.所屬班級id group by a.
班級名稱
此時結果:
班級名稱 人數
一班 2
二班 0
所以左連線就是以左表為基準,來顯示全部資料,而不用左連線則只顯示能關聯上的資料。
3樓:***的小狼
select z1.*,z3.bbb from z_whf_test1 z1 left join z_whf_test3 z3 on z1.
aaa=z3.aaa where z3.bbb='4g';
這條sql是先把z1表和z3表進行左關聯,然後在根據where條件進行刪選,所以結果出來就只有三條。
select z1.*,z3.bbb from z_whf_test1 z1 left join z_whf_test3 z3 on z1.
aaa=z3.aaa and z3.bbb='4g';
這條sql是兩個表進行左關聯的時候,先對z3表進行了過濾,就是說,是把z1和z3表過濾後的資料進行關聯,所以就出現第二種這種查詢結果了。
oracle資料庫中函式怎麼使用
4樓:千鋒教育
oracle資料庫中函式較多,而且每個函式都有自己的用法,所以要根據具體的函式查詢具體的使用方法,比如:
decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值)
這個函式執行的結果是,當欄位或欄位的運算的值等於值1時,該函式返回值2,否則返回值3
當然值1,值2,值3也可以是表示式,這個函式使得某些sql語句簡單了許多
使用方法:
1、比較大小
select decode(sign(變數1-變數2),-1,變數1,變數2) from dual;
--取較小值
sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1
例如:變數1=10,變數2=20
則sign(變數1-變數2)返回-1,decode解碼結果為「變數1」,達到了取較小值的目的。
2、此函式用在sql語句中,功能介紹如下:
decode函式與一系列巢狀的
if-then-else語句相似。base_exp與compare1,compare2等等依次進行比較。如果base_exp和 第i
個compare項匹配,就返回第i 個對應的value
。如果base_exp與任何的compare值都不匹配,則返回default。每個compare值順次求值,如果發現一個匹配,則剩下的compare值(如果還有的話)就都不再求值。
一個為null的base_exp被認為和null
compare值等價。如果需要的話,每一個compare值都被轉換成和第一個compare 值相同的資料型別,這個資料型別也是返回值的型別。
5樓:匿名使用者
建立函式(sql視窗)
create or replace function get_stu_grade(stu_grade number) return number as
begin
declare standard_grade number;
begin
standard_grade:=stu_grade - 60;
if standard_grade < 0 thenreturn 0;
end if;
return 1;
end;
end get_stu_grade;
6樓:匿名使用者
跟sqlserver的函式基本沒太大區別
如何把oracle資料庫中資料匯出
oracle開啟資料庫例項後如何載入資料庫
7樓:aa的雪人
alter database mount
裝載資料庫,但還不能使用
alter database open
開啟資料庫,這時的狀態是可以使用的,open時主要是校驗控制檔案和資料檔案的一致性,也不可以不進行校驗強行開啟
8樓:匿名使用者
alter database mount;--載入
alter database open;--開啟
sql資料庫和oracle資料庫string型別欄位用orderby排序分別是根據什麼排序的啊
首先說明下oracle中沒有string型別,而是varchar型別。order by 的順序是assic 讀作 阿斯科馬 碼錶中 字元 列進行排序的。解釋 一般會根據字串的首字母 大些字母 小寫字母 特殊字元 數字。如果首位相同繼續排列第二位,直到不同的位。sql資料和oracle資料庫都沒有st...
oracle資料庫問題,關於oracle資料庫匯出問題,錯誤如下
1 select ename,decode sign sal 1000 1,0,decode sign sal 2000 1,sal 0.1,decode sign sal 3000 1,sal 0.15,sal 0.2 sal from emp 2 select ename,case when s...
Oracle資料庫如何匯出
資料匯出具體如下 將資料庫test完全匯出,使用者名稱system 密碼manager 匯出到d daochu.dmp中。將資料庫中system使用者與sys使用者的表匯出。將資料庫中的表table1 table2匯出。將資料庫中的表table1中的欄位filed1以 00 打頭的資料匯出。將d d...