場景:有兩張表,一張異常資訊表,一張異常處理資訊表,根據使用者名稱查詢該使用者可以看到的異常資訊,同時還要連表查詢異常資訊表裡的改進方案和備註資料;
sql1:
select b.*,h.*from usm_exception_bill bleft join usm_exception_handling h on b.code=h.code
where b.is_delete=0 and b.is_active=0and h.is_delete=0 and h.is_active=0and b.username='admin';
描述:上面情況只會查詢出usm_exception_bill表和usm_exception_handling表都滿足條件的表,但是當usm_exception_handling表沒有usm_exception_bill表的處理資訊時,只會
查詢出usm_exception_bill和usm_exception_handling都有的資料,那麼在處理表沒有處理資訊的異常資料就不會被查詢出來,客戶看到的資料就是不完整的;
sql2:
select b.*, h.*from usm_execption_billleft join usm_exception_handling h on h.code=b.code
and b.is_delete=0 and b.is_active=0and h.is_delete=0 and h.is_active=0and b.username='admin';
描述:這樣可以查詢出usm_exception_bill表和usm_exception_handling表有關聯的全部資料,但是條件就不生效了,成了擺設;
sql3:
select b.*, h.*from(select *from usm_exception_bill
where is_delete=0 and is_active=0 and b.username='admin') b
left join usm_exception_handling h on b.code =h.code
and b.is_delete=0 and b.is_active=0and h.is_delete=0 and h.is_active=0;
描述:先去usm_exception_bill表把滿足條件的資料查詢出來,在去usm_exception_handling表匹配出相應的處理資訊,這樣既不會資料顯示不全,也不會過濾條件失效;
ORACLE 各種連表方式查詢
話不多說直入正題 select from a join b on a.id b.id sql語法表的內連線方式 select from a left join b on a.id b.id sql語法表的左外連線方式 以左表為主表的右表為輔表,查詢主表的全部字段 select from a righ...
mysql的連表查詢 MySQL 連表查詢
連表查詢 連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢 而外連線又分為三種連線方式,分別是左連線 left join 右連線 right join 全連線 full join 下來我們一起來看一下這幾種連線方式的區別及基礎用法。內連線inner join inner...
oracle 資料庫的 左連 和 右連
a 資訊表 裡面有計畫表id b 計畫表 現在要查詢關聯的id的字段 並且 資訊表沒有 計畫id的資料 用到這個左 因為 資訊表在左 就可以查詢出來 select a.from yt tdkb xxlr a left join yt tdkb jhb b on a.fxxjhsjid b.fid 如...