sql子查詢遞歸
『壹』 如何實現資料庫sql遞歸查詢在不同資料庫中例子源代碼
sql 遞歸查詢的方法:
方法一:T-SQL遞歸查詢
with Dep as
(
select Id,DeptCode,DeptName from Department where Id=1
union all
select d.Id,d.DeptCode,d.DeptName from Dep
inner join Department d on dep.Id = d.ParentDeptId
)
select * from Dep
方法二:PL/SQL遞歸查詢
select Id,DeptCode,DeptName
from Department
start with Id = 1
connect by prior Id = ParentDeptId;
『貳』 sql 怎麼遞歸查詢的方法:
1.創建測試表,createtabletest_connect(idnumber,p_idnumber);
『叄』 sql如何實現把遞歸語句當做子查詢
SQL 語句不支持不知道層次數量的遞歸查詢。所以你的上級機構如果不知道層數的話是沒有辦法查詢的,如果知道層數的話還是可以寫的。
你現在的情況,如果數據量不大的話可以考慮把所有數據查出來,放到內存中,然後在程序里處理你的遞歸查詢
『肆』 SQL遞歸查詢知多少
sql 遞歸查詢的方法:
方法一:T-SQL遞歸查詢
with Dep as
(
select Id,DeptCode,DeptName from Department where Id=1
union all
select d.Id,d.DeptCode,d.DeptName from Dep
inner join Department d on dep.Id = d.ParentDeptId
)
select * from Dep
方法二:PL/SQL遞歸查詢
select Id,DeptCode,DeptName
from Department
start with Id = 1
connect by prior Id = ParentDeptId;
『伍』 sql子查詢和連接查詢的區別是什麼呢
1、子查詢就如遞歸函數一樣,有時侯使用起來能達到事半功倍之效,只是其執行效率同樣較低,有時用自身連接可代替某些子查詢,另外,某些相關子查詢也可改寫成非相關子查詢。
2、表連接都可以用子查詢,但不是所有子查詢都能用表連接替換,子查詢比較靈活,方便,形式多樣,適合用於作為查詢的篩選條件,而表連接更適合與查看多表的數據。
3、子查詢是一種常用計算機語言SELECT-SQL語言中嵌套查詢下層的程序模塊。當一個查詢是另一個查詢的條件時,稱之為子查詢。
4、子查詢是本質上就是一個完整 的SELECT 語句,它可以使一個 SELECT、SELECT...INTO 語句、INSERT...INTO 語句、DELETE 語句、或 UPDATE 語句或嵌套在另一子查詢中。子查詢的輸出可以包括一個單獨的值(單行子查詢)、幾行值(多行子查詢)、或者多列數據(多列子查詢)。
5、連接查詢是關系資料庫中最主要的查詢,主要包括內連接、外連接和交叉連接等。通過連接運算符可以實現多個表查詢。連接是關系資料庫模型的主要特點,也是它區別於其它類型資料庫管理系統的一個標志。
『陸』 如何實現SQL語句的遞歸查詢
1.創建測試表,createtabletest_connect(idnumber,p_idnumber);
『柒』 如何用SQL遞歸查詢出下面的結果 SQL遞歸語法是怎麼查詢的
create table #A (a int,b int)
insert #a select 1 , 1000
insert #a select 2 , 2000
insert #a select 3 , 3000
insert #a select 4 , 4000
-------------------------------------------
create table #b(a int,b int)
insert into #bselect * from #a where a=1
declare @a int
declare @b int
select @a=min(a) from #a
select @b=max(a) from #A
while (@a<=@b)
begin
insert into #b
select t1.a,t1.b+t2.b
from #a t1,#b t2
where t1.a=t2.a+1
and t2.a=@a
set @a=@a+1
end
select * from #b
『捌』 SQL中遞歸查詢
CREATE PROCEDURE [dbo].[SetColGroup](@sColItemCode VARCHAR(50),@ReportID VARCHAR(50) )
AS
-- 獲取ItemCode對應的GroupCode,並更新至臨時表中
BEGIN
DECLARE @sSQL VARCHAR(1000)
DECLARE @colGroupCode VARCHAR(50)
DECLARE @SuperColItemCode VARCHAR(50)
DECLARE @colSuperGroupCode VARCHAR(50)
--獲取下一級別的數據(這里的SuperColItemCode實際上是下一級數據)
DECLARE curGroupCodeTmp CURSOR LOCAL FOR
SELECT c.ColGroupCode,b.SuperColItemCode,d.ColGroupCode AS ColSuperGroupCode
FROM dbo.ReportItemCross b
INNER JOIN dbo.ReportColItem c ON b.ColItemCode = c.ColItemCode
INNER JOIN dbo.ReportColItem d ON b.SuperColItemCode = d.ColItemCode
WHERE b.ColItemCode = @sColItemCode AND b.ReportID = @ReportID
OPEN curGroupCodeTmp
FETCH NEXT FROM curGroupCodeTmp
INTO @colGroupCode,@SuperColItemCode,@colSuperGroupCode
WHILE @@FETCH_STATUS = 0
BEGIN
--此處進行實際數據處理
IF(ISNULL(@colGroupCode,'')<>'' AND ISNULL(@colSuperGroupCode,'')<>'')
SET @sSQL = 'update ##tmp set ' + @colSuperGroupCode + ' = ''' + @SuperColItemCode
+ ''' where ' + @colGroupCode + ' = ''' + @sColItemCode + ''''
EXECUTE(@sSQL)
--根據條件判斷是否結束遞歸
IF(ISNULL(@SuperColItemCode,'') <> '')
EXEC SetColGroup @SuperColItemCode,@ReportID
FETCH NEXT FROM curGroupCodeTmp
INTO @colGroupCode,@SuperColItemCode,@colSuperGroupCode
END
CLOSE curGroupCodeTmp
DEALLOCATE curGroupCodeTmp
END
『玖』 sql語句中怎麼實現遞歸查詢
在SQL
SERVER
2000
中你可以先一些自定義函數,或一些存儲過程,實現遞歸:
select
level,TypeName
from
ProctType
t
START
WITH
t.ParentID=0
CONNECT
BY
PRIOR
t.ProctTypeID=
t.ParentID;
『拾』 SQL遞歸查詢所有子節點
你這樣設計的表用遞歸來顯示最恰當 我剛剛好有這個的代碼 發給你參考下吧
/// <summary>
/// 綁定根節點
/// </summary>
/// <param name="id"></param>
/// <param name="ddlList"></param>
public void BindSysMenu(string id, DropDownList ddlList)
{
ListItem ll = new ListItem();
ll.Text = "╋--請選擇-----";
ll.Value = "-1";
ddlList.Items.Add(ll);
DataTable dt = new ManageContentInfoBll().GetWName(id).Tables[0];
foreach (DataRow dr in dt.Rows)
{
ListItem li = new ListItem();
li.Text = "╋" + dr["W_Name"].ToString();
li.Value = dr["W_ID"].ToString();
ddlList.Items.Add(li);
BindSysMenuChild((dr["W_ID"].ToString()), ddlList, "├—");
}
}
/// <summary>
/// 綁定子節點
/// </summary>
public void BindSysMenuChild(string id, DropDownList ddlList, String separtor)
{
DataTable dt = new ManageContentInfoBll().GetWName(id).Tables[0];
foreach (DataRow dr in dt.Rows)
{
ListItem li = new ListItem();
li.Text = separtor + dr["W_Name"].ToString();
li.Value = dr["W_ID"].ToString();
string separtor_ = separtor + "——";
ddlList.Items.Add(li);
BindSysMenuChild(dr["W_ID"].ToString(), ddlList, separtor_);
}
}
sql 語句 很簡單的
select * from WebSubjectMenu where W_Logo ="+id+"
W_Logo 是上級的ID
希望對你有幫助吧。