首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 查詢遍歷資料方法一:暫存表搭配 While 迴圈

     編輯:關於SqlServer

SQL 查詢遍歷資料方法一:暫存表 + While 迴圈

以 SQL Server 2000 Northwind 資料庫的 Customers 資料表為例,使用 暫存表 搭配 While 迴圈 遍歷 CompanyName 欄位。

完整程式碼

CREATE TABLE #temp
(
    id INT IDENTITY(1,1),
    customer NVARCHAR(50)
)

DECLARE @customer NVARCHAR(50)
DECLARE @n INT
DECLARE @rows INT

SELECT @n = 1

INSERT #temp (customer)
SELECT DISTINCT CompanyName FROM Customers

SELECT @rows = @@ROWCOUNT

WHILE @n <= @rows
BEGIN
    SELECT @customer = CompanyName
    FROM Customers
    WHERE CompanyName = (SELECT customer FROM #temp WHERE id = @n)
    ORDER BY CompanyName DESC

    PRINT @customer
    SELECT @n = @n + 1
END

DROP TABLE #temp

執行結果(前 20 筆)

Alfreds Futterkiste
Ana Trujillo Emparedados y helados
Antonio Moreno Taquería
Around the Horn
Berglunds snabbköp
Blauer See Delikatessen
Blondesddsl père et fils
Bólido Comidas preparadas
Bon app'
Bottom-Dollar Markets
B's Beverages
Cactus Comidas para llevar
Centro comercial Moctezuma
Chop-suey Chinese
Comércio Mineiro
Consolidated Holdings
DIE Wandernde Kuh
Drachenblut Delikatessen
Du monde entier
Eastern Connection
...
(共 91 筆記錄)

方法比較

特性暫存表法游標法
資源佔用需建立實體暫存表記憶體中維護游標結構
程式碼複雜度需手動管理計數器語法較標準化
效能大量資料時較慢通常較暫存表法佳
適用場景需複雜中間運算、多次引用單純逐筆處理

最佳實務建議

現代 SQL Server 開發建議優先使用 集合式操作(如 SELECT、JOIN、APPLY、窗格函數)替代逐筆迴圈,效能與可維護性較佳。僅在必須逐筆執行程序邏輯(如呼叫外部 API、發送郵件)時考慮迴圈方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved