1
我想找出一個更好,更有效的方式來編寫下面的腳本。任何人都可以想出一種方法來實現相同的目標而不使用遊標?尋找替代遊標
「用戶」可能會在table1中出現多次,但只能在table2中存在一次。
TABLE1
|Name |Access |
-------------------
User1 |N |
User1 |N |
User1 |Y |
TABLE2
|Name |Access |
-------------------
User1 | |
User2 | |
User3 | |
代碼:
DECLARE @Name VarChar(50), @Access VarChar(1)
DECLARE TestCursor CURSOR FOR
SELECT Name, Access FROM Table1 ORDER BY Obj ASC
OPEN TestCursor
FETCH NEXT FROM TestCursor INTO @Name, @Access
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE table2
SET Table2.Access = CASE
WHEN Table1.Access = 'Y' THEN Table1.Access
ELSE Table2.Access END
FROM table1
JOIN table2 ON table1.name = table2.name
FETCH NEXT FROM TestCursor INTO @Name, @Access
END
CLOSE TestCursor
DEALLOCATE TestCursor
不表1真的列表user1的3倍?如果是的話,user1應該訪問哪些內容?和以前的答案存在這樣的問題...如:http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a-id-match否需要重新發明輪子。 – xQbert