exist in用法解析2

2021-08-25 07:54:55 字數 721 閱讀 8338

in 的用法:

繼續引用上面的例子

「2) select * from t1 where t1.a in (select t2.a from t2) 」

這裡的「in」後面括號裡的語句搜尋出來的字段的內容一定要相對應,一般來說,t1和t2這兩個表的a欄位表達的意義應該是一樣的,否則這樣查沒什麼意義。

打個比方:t1,t2表都有乙個字段,表示工單號,但是t1表示工單號的欄位名叫「ticketid」,t2則為「id」,但是其表達的意義是一樣的,而且資料格式也是一樣的。這時,用 2)的寫法就可以這樣:

「select * from t1 where t1.ticketid in (select t2.id from t2) 」

select name from employee where name not in (select name from student);

select name from employee where not exists (select name from student);

第一句sql語句的執行效率不如第二句。

通過使用exists,oracle會首先檢查主查詢,然後執行子查詢直到它找到第乙個匹配項,這就節省了時間。oracle在執行in子查詢時,首先執行子查詢,並將獲得的結果列表存放在乙個加了索引的臨時表中。在執行子查詢之前,系統先將主查詢掛起,待子查詢執行完畢,存放在臨時表中以後再執行主查詢。這也就是使用exists比使用in通常查詢速度快的原因。

struts2 namespace 用法解析

namespace 的配置很簡單 只是在package裡加個namespace屬性 log 一定要有斜槓 success.jsp error.jsp jsp頁面 namespace log 一種方法 另一種是 action log getlog 切記 最前面不要加斜槓 不要用struts1的習慣。如...

C 中vector的用法解析 2

向量 vector 是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。在使用它時,需要包含標頭檔案 vector,i...

srand time NULL 用法解析

在一些產品的源 中,經常會發現有這樣的語句,srand unsigned time null 為什麼要這樣做呢,其實很簡單。1.time 函式表示返回1970 1 1 00 00 00 到當前時間的秒數,而time null 表示獲取乙個時間,準確的說,獲取乙個指標的位址。2.srand 函式是產生...