我在Excel中有父子數據,該數據被加載到運行MS SQL服務器的第三方系統中。數據表示有向(有希望)非循環圖。第三方意味着我在架構中沒有完全放手。 excel數據是其他文件的串聯,並且存在以下可能性:在各個文件之間的交叉引用中,某人引起了循環 - 即X是Y(X> Y)的子節點,然後是別處(Y-> A- > BX)。我可以在excel或SQL服務器db上編寫vb,vba等。 excel文件差不多有3萬行,所以我擔心隨着數據量的增長,組合爆炸將會增加。因此,像創建所有路徑的表一樣的技術可能相當笨拙。我正在考慮簡單地編寫一個程序,該程序對每個根進行遍歷每個葉的樹,並且如果深度超過某個標稱值,則會對其進行標記。
更好的建議或指向以前的討論歡迎。SQL - 在父子關係中檢測循環
4
A
回答
4
您可以使用遞歸CTE檢測循環:
with prev as (
select RowId, 1 AS GenerationsRemoved
from YourTable
union all
select RowId, prev.GenerationsRemoved + 1
from prev
inner join YourTable on prev.RowId = ParentRowId
and prev.GenerationsRemoved < 55
)
select *
from prev
where GenerationsRemoved > 50
這並不需要你指定最大遞歸級別:在這種情況下,CTE運行至55,並與超過選擇爲錯誤的行50個孩子。
相關問題
- 1. 親子循環(無限父關係)
- 2. 依賴關係排序與循環依賴關係的檢測
- 3. SQL父子關係查詢
- 4. SQL循環依賴關係
- 5. 在Python中檢測循環依賴關係
- 6. 在ES6中檢測循環依賴關係
- 7. SQL中的父級子記錄關係?
- 8. 查詢sql中的父子關係
- 9. 檢測項目中的循環依賴關係
- 10. 父子關係
- 11. 父子關係
- 12. 父子關係
- 13. 父/子關係曹景偉無限循環
- 14. 循環通過數組,並插入到表父子關係
- 15. 在mysql中獲取父/子/子關係
- 16. 測試休眠父母/子女關係
- 17. 循環內循環 - 在autohotkey中檢測循環結束
- 18. SQL查詢父親的孩子關係
- 19. SQL查詢爲父子關係
- 20. LINQ到與父子關係SQL查詢
- 21. 父子關係的SQL查詢遞歸
- 22. SQL - 父子關係排序表
- 23. graphql查詢SQL父子關係
- 24. 父子關係的LINQ to SQL
- 25. 使用CTE的父子關係Sql Server
- 26. SQL Server - 用父子關係打開XML
- 27. 父子關係 - TSQL
- 28. XSD父子關係
- 29. Hibernate父/子關係
- 30. 與父/子關係
當檢測到循環時,您想要做什麼? – Fosco 2010-07-12 16:17:50
如果您不知道或無法確定最大有效深度,那麼您的「大於等級X =問題」的任意上限可能不準確。這些信息是否可用? – 2010-07-12 16:25:01