Mac*_*ver 6 sql loops sql-server-2008
有没有更有效的方法来编写这段代码?或者用更少的代码?
SELECT *
INTO #Temp
FROM testtemplate
Declare @id INT
Declare @name VARCHAR(127)
WHILE (SELECT Count(*) FROM #Temp) > 0
BEGIN
SELECT TOP 1 @id = testtemplateid FROM #Temp
SELECT TOP 1 @name = name FROM #Temp
UPDATE testtemplate
SET testtemplate.vendortestcode = (SELECT test_code FROM test_code_lookup WHERE test_name = @name)
WHERE testtemplateid = @id
--finish processing
DELETE #Temp Where testtemplateid = @id
END
DROP TABLE #Temp
Run Code Online (Sandbox Code Playgroud)
Joe*_*lli 12
您可以在单个UPDATE中执行此操作而无需循环.
UPDATE tt
SET vendortestcode = tcl.test_code
FROM testtemplate tt
INNER JOIN test_code_lookup tcl
ON tt.name = tcl.test_name
Run Code Online (Sandbox Code Playgroud)
您可以尝试这样的单个更新:
UPDATE A
SET A.vendortestcode = B.test_code
FROM testtemplate A
INNER JOIN test_code_lookup B
ON A.name = B.test_name
Run Code Online (Sandbox Code Playgroud)
此外,您现在的方式是错误的,因为您在两个单独的查询中获取了TOP 1 Id和TOP 1名称,没有ORDER BY
,因此不确定您是否为您的ID选择了正确的名称.