有一些方法可以在SQL中實現無限循環?我想對有的像選擇裏面一個又一個,遞歸......(也許我講的愚蠢)SQL中的無限循環?
4
A
回答
11
你可以做一個CTE遞歸無限循環:
;with rec as
(
select 1 as n
union all
select n + 1
from rec
)
select n
from rec
默認情況下,SQL服務器將停止在100;你可以讓它永遠循環下去:
option (maxrecursion 0)
5
1
DECLARE @number INT = 3
WHILE (@number = 3)
BEGIN
PRINT @number
END
2
我無法想象,你爲什麼會想這樣做,但它要依賴在您的實現的(SQL Server,Oracle,MySQL ...)支持的循環結構中。
例如,在SQL Server中,您將以任何命令式語言的方式編寫無限循環。粗略地說:
DECLARE @x INT = 0
WHILE (@x = 0)
BEGIN
PRINT @x
END
0
你不能創建一個像SQL這樣的聲明語言的無限循環,因爲編譯器不會讓你。你會得到錯誤信息和/或它不會運行。
您需要像JNK建議的那樣,使用SQL來順序編寫某些內容。
3
這應該在Oracle工作
select * from (select level x from dual connect by level >=0)
外部選擇是需要避免一些優化與客戶端和數據庫的一些組合發生。
不完全確定level >= 0
部件是否按預期工作,因爲通常情況下,您只能將其與level <= 50
之類的東西一起使用以獲取固定行數。
+0
我發現這個解決方案在自動測試邏輯時非常有用,它負責正確地查殺長時間運行的查詢。沒有它,我將不得不找到一些大表或交叉連接許多表,這取決於數據庫中的數據,並導致不穩定和脆弱的測試。 – 2014-10-01 09:04:43
相關問題
- 1. PL/SQL無限循環
- 2. SQL-Server無限循環
- 3. 在SQL查詢中的無限循環
- 4. T-SQL遊標中的無限循環
- 5. 從SQL到HQL的Hibernate - 無限循環?
- 6. 無限循環?
- 7. 無限循環:
- 8. 無限循環
- 9. 無限循環
- 10. 無限循環
- 11. 無限循環
- 12. 無限循環
- 13. 無限循環
- 14. (?無限)循環
- 15. 無限循環?
- 16. 無限循環...?
- 17. 無限循環
- 18. 無限循環
- 19. 無限循環
- 20. 無限循環
- 21. 無限循環中的jQuery
- 22. Java中的無限循環
- 23. JPanel中的無限循環
- 24. Python中的無限循環
- 25. 無限循環中的backgroundworker
- 26. FreeBSD中的無限循環
- 27. C++中的無限循環
- 28. Tkinter中的無限循環?
- 29. htaccess中的無限循環
- 30. C++中的無限循環
+1 - 比其他人(包括我的)更原始! – JNK 2011-05-10 19:01:14
你需要添加'OPTION(MAXRECURSION = 0)'使這個無限,對不對? – 2011-05-10 19:03:58
事實證明,這隻適用於SQL 2005或更高版本 - 對於SQL 2000: – jiaoziren 2012-05-28 02:27:59