當前位置:首頁 » 編程語言 » sqlserver遞歸

sqlserver遞歸

發布時間: 2022-08-20 15:36:37

A. 關於sqlserver遞歸查詢

你的意思沒特別看懂,但是在ORACLE裡面的遞歸語法是:
select * from tab ...start with ... connect by col_parent...
你可以查一下start with ,connect 的語法

B. sqlserver函數中引用遞歸

set@p_b=(selectfidfromw_Storage_Depositorywherefidin(selectfidfromdbo.jt_base_companywherebj=1))

改成

select@p_b=fidfromw_Storage_Depositorywherefidin(selectfidfromdbo.jt_base_companywherebj=1)

C. sqlserver遞歸演算法

With T
As
(
Select * From TB Where newNo=103
Union All
Select TB.* From TB Inner Join T on TB.newNo=T.oldNo
)
Select * From T

D. sqlserver 向上遞歸 向下遞歸我知道了,但是如何向上遞歸難

寫在SQL里吧,可以避免頻繁的創建連接,那是開銷很大的.
不過可能寫在sql里比較煩吧.

E. SQL遞歸查詢知多少

1、基本概念

公用表表達式 (CTE) 可以認為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語句的執行范圍內定義的臨時結果集。公用表表達式可以包括對自身的引用,這種表達式稱為遞歸公用表表達式。

創建遞歸查詢。有關詳細信息,請參閱使用公用表表達式的遞歸查詢。
在不需要常規使用視圖時替換視圖,也就是說,不必將定義存儲在元數據中。
啟用按從標量嵌套 select 語句派生的列進行分組,或者按不確定性函數或有外部訪問的函數進行分組。
在同一語句中多次引用生成的表。

MSDN上對CTE的介紹
T-SQL查詢進階--詳解公用表表達式(CTE)

CTE 的基本語法結構如下:

WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
--只有在查詢定義中為所有結果列都提供了不同的名稱時,列名稱列表才是可選的。
--運行 CTE 的語句為:
SELECT <column_list> FROM expression_name;

即三個部分:

公用表表達式的名字(在WITH關鍵字之後)
查詢的列名(可選)
緊跟AS之後的SELECT語句(如果AS之後有多個對公用表的查詢,則只有第一個查詢有效)

F. sqlserver 遞歸查詢

CREATE TABLE #tb1(stuId INT,stuName VARCHAR(30),teaId INT);
INSERT INTO #tb1 (stuId,stuName,teaId)
VALUES(1,'zhou',0),(2,'kong',0),(3,'hong',2),(4,'zhang',1),(5,'liu',4),
(6,'zhao',5),(7,'zheng',6),(8,'wei',7)
;WITH cte AS (
SELECT t.stuId,t.stuName,t.teaId FROM #tb1 AS t
WHERE t.stuId=8
UNION ALL
SELECT t.stuId,t.stuName,t.teaId FROM cte AS c
JOIN #tb1 AS t ON c.teaId=t.stuId
)
SELECT * FROM cte

G. 怎麼用sqlserver實現遞歸刪除目錄結構

WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees WHERE ManagerID IS NULL UNION ALL --主要是在此,增加一個union all SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 FROM dbo.MyEmployees AS e INNER JOIN DirectReports AS d -- 在此調用自身,就可以實現遞歸了 ON e.ManagerID = d.EmployeeID ) SELECT ManagerID, EmployeeID, Title, EmployeeLevel FROM DirectReports ORDER BY ManagerID;

H. 資料庫語句的遞歸查詢求助

應該是這樣:

with qry as (select user_id,parent_id from tab where user_id = 32
union all
select tab.user_id,tab.parent_id from tab,qry
where tab.parent_id = qry.id)
select * from qry ;

我用mysql5.0.22,不支持上述語法,oracle就可以(sqlserver應該也可以):
create table tab1(user_id int, parent_id int);
insert into tab1 values(1,null);
insert into tab1 values(32,1);
insert into tab1 values(101,32);
insert into tab1 values(102,32);
insert into tab1 values(201,101);
insert into tab1 values(202,101);
insert into tab1 values(203,102);
insert into tab1 values(204,102);
select * from tab1;
with qry(user_id,parent_id) as (select user_id,parent_id from tab1 where user_id = 32
union all
select tab1.user_id,tab1.parent_id from tab1,qry
where tab1.parent_id = qry.user_id
)
select * from qry;

所以,mysql沒有辦法了,只有寫函數,用循環來實現了。

熱點內容
php定時腳本 發布:2024-05-02 22:18:41 瀏覽:312
雲服務可以替代普通伺服器么 發布:2024-05-02 21:57:11 瀏覽:943
wegame與伺服器斷開連接是怎麼回事 發布:2024-05-02 21:55:05 瀏覽:784
zip加密破解 發布:2024-05-02 21:41:23 瀏覽:480
怎麼模擬電腦配置 發布:2024-05-02 21:28:08 瀏覽:784
對一個新編程 發布:2024-05-02 21:20:07 瀏覽:559
華為系統編譯器在哪裡 發布:2024-05-02 21:19:50 瀏覽:86
ebsco資料庫檢索 發布:2024-05-02 21:18:51 瀏覽:82
python遞歸創建目錄 發布:2024-05-02 21:02:38 瀏覽:280
資料庫分離與附加 發布:2024-05-02 20:56:59 瀏覽:40