遍歷聯合查詢

2021-08-20 01:22:18 字數 1939 閱讀 3686

分享幾個專案中需要運用的中等難度的sql server語句函式

1.union和union all

都用於合併sql結果集操作,不管sql語句是否相同,但是返回字段最好一樣,若不一樣,欄位名稱只會以第乙個為準 

簡單語句聯合查詢:

select * from rn_businesstype where id='addac159-079d-4cac-a9c7-678c5b01f86b'

union all

select * from rn_businesstype where id='733b5b2c-fd82-4a0f-8620-a47987a85aa1'

注意:union all語句優於and 和 or和 in 語句

在專案中使用的比較少,但是我們在進行遞迴查詢時,通常都是和它就掛鉤啦!

2.sql with (遞迴cte查詢)

遞迴查詢用到的場景大多數在

區域查詢:比如我查詢成都市時 得把成都市的父級也查詢出來或則把成都市的子級都查詢出來

選單級別查詢:比如查詢3級選單時,得把1,2級選單也載入出來或則把4,5級選單載入出來

。。。。。。。

運用遞迴查詢 通常要查詢的表 都是資料結構父子級關係的

列1:通過模糊查詢出它的上級關係

with cte as

(select o.*

from areas o where f_fullname like '%金峰鎮%' 

union all

select o.*

from areas o inner join cte as c on c.f_parentid=o.f_id

)select distinct * from cte  

我解釋下:

areas :表名

f_fullname ;表字段(區域名稱)

f_parentid:表字段(父類id)

f_id:表字段(主鍵id)

其中語句: 

select o.* from areas o where f_fullname like '%金峰鎮%' 

是作為cte的資料來源 

然後在對cte資料來源做遍歷 迭代聯合查詢

與下語句關聯 把資料來源資料的父類id作為聯合查詢語句的id進行比對查詢

union all

select o.* from areas o inner join cte as c on c.f_parentid=o.f_id

直到沒有比對資料為止 然後

select distinct * from cte 

然後把所有匹配的資料載入出來

列2:通過模糊查詢出它的下級關係

with cte as

(select o.*

from areas o where f_fullname like '%金峰鎮%' 

union all

select o.*

from areas o inner join cte as c on c.f_id=o.f_parentid

)select distinct * from cte  

列3:如果對某一級做級別改變時 ,它底下的子級級別是不是也要發生改變

語句:f_layers:表字段(級別值)

with cte as

(select o.*

from areas o where f_id=# and isnull(

f_deletemark, 0) != 1

union all

select o.*

from areas o inner join cte as c on c.f_id=o.f_parentid

)update areas set f_layers=f_layers+1(級別轉換值) where f_id in (

select distinct f_id from cte )

Execl ADO SQL 聯合查詢

原題目 如何從兩張excel表中取數,生成第三張表?表一 a姓名 b身份證號 c金額1 張三642120197409020031 21002李四 552120197509020031 31003王五 693120197408020031 20004陳三 642202197409020031 1000...

SQL 聯合查詢

use xsgl go select from student select from cause select from exam 聯合查詢 join on 預設為inner,如果有right or left 那麼就指的是外聯,outer 可以不寫 1.最長見為內聯 table1 inner jo...

mysql聯合查詢

有乙個前提很重要 就是兩個表中的對應字段應該是建立聯合關係且該鍵應唯一 在查詢該聯合建的時候要指明 表.欄位 1.select from 表a,表a子表 where表a.filecode 表a子表.filecodeand表a.id in select 表a子表 id from 表a子表 where ...