sql 兩表聯查 其中一張表求和進行函式執行 分組

2021-10-07 19:04:50 字數 762 閱讀 2997

1老規矩,上鏈結,自己做這個需求查到的部落格

on和where的區別

當我們使用連線操作,關聯兩張或多張表來返回記錄時,資料庫都會生成一張臨時表,最後將這張臨時表返回給使用者。

以 left join 為例:在使用 left join 時,on 和 where 過濾條件的區別如下:

on 條件是在生成臨時表時使用的條件,它不管 on 中的條件是否為真,都會返回左邊表中的記錄;

where 條件是在臨時表已經生成後,對臨時表進行的過濾條件。因為此時已經沒有 left join 的含義(必須返回左側表的記錄)了,所以如果 where 條件不為真的記錄就會被過濾掉。

//a表記錄的是物資基礎資訊

//b表記錄的是某一種物資不同批次的庫存量

//需要查詢的是某一種型別物資屬於某部門的當前的庫存量

select a.code,a.name,a.specification_type,sum( case when b.mat_num = a.code then b.stock_num else 0 end )

from material_info a

left join ws_mat_stock b on a.useable =1

where a.type='0' and b.plan_office_id = "7cd1c2fd97f44c1ca533c798cf85a95b"

group by a.code,a.name,a.specification_type

oracle中一張表的某個欄位與另一張表關聯

今天在無意間查詢到乙個sql,有兩張表,一張使用者表,使用者表中有個personroles欄位,clob型別,裡面是逗號分隔的角色id a,b,c,d 需要查詢每個人和其現有的角色。問題在於使用者表和角色表的關聯,直接left join用roles.id in user.personroles 查詢...

sql 插入一張表的部分字段需要查詢另一張表

insert into 表a 欄位a,欄位b,欄位c select 欄位a 欄位b 欄位c from 表bwhere 條件insert into 表a 欄位a,欄位b,欄位c,欄位d select 欄位a 要插入的值 例 inserttest 不為在表b查詢到的值 用 包起來表示字串,方法,數值不用...

多對多返回其中一張表的所有資料和關聯標記

已知 實體表a中屬性有 a,b,c,d a為主鍵 實體表b中有 d,e,f d為主鍵,ab的多對多關係c a,d 需求 根據表b中的主鍵的條件查詢,查詢繫結a表中的資料,也要求返回未繫結的資料,即對於ba表中有聯絡的資料用狀態1表示,a與b未聯絡的資料用狀態2表示 場景描述 對於經常存在的例如使用者...