sql查詢的問題

2021-08-19 15:38:38 字數 675 閱讀 5671

今天在做資料初始化的時候,出現了乙個sql問題。

在進行表連線查詢時使用的left join,在設定篩選條件時出現了結果不一樣的情況。

情況一:

select * from "wk_activity" a

left join "wk_activity_workitem" b on a."id" = b."activity"

where b."claim_time" is not null;

情況二:

select * from "wk_activity" a

left join "wk_activity_workitem" b on a."id" = b."activity"

and b."claim_time" is not null;

從上面的2種情況可以看出,b."claim_time" is not null

這個條件的放置位置不一樣,執行出的結果也是不一樣的。

情況一將條件放置到where後面,是表聯接完成後再使用where的條件進行篩選;而情況二將條件放置到on後面,是帶著條件進行表聯接處理,然後再使用where條件進行篩選,因此查詢出的記錄條件不一樣。

另外,在sql查詢中盡量使用not exists 代替 not in

參考這個解釋得很好喲。

sql查詢遇到的問題

一 與 在pl sql developer中,比如查詢如下sql select decode column name,if1 value1 if2 value2 if3 value1 value2 else from table name 就會出現如下變數對話方塊 要求輸入的名稱為value2的值,...

SQL 遞迴查詢問題

最近做到找出所有的上級或者所有的下級的問題,需要用到遞迴 找出所有下屬員工id with tab as select from sys user where f id union all select b.from tab a,sys user b where a.f id b.supervisor...

sql查詢過程的問題

1 問題 使用儲存過程一直得不到結果,但是用查詢語句的話可以得到 create proc getexchangeorderbytime title varchar 300 pageviewcount int,這個是頁面顯示的條數 pagesize int,這個當前頁 table varchar 80...