我有一个充满值的表,但是我想在临时表中操作这些数据!下面显示了该表的一个示例(这不是我的实际表格)!
所以说现在我要遍历行名称和名称为john的位置我想将其更改为Simon,其中名称是Carol我想改为Mike(这只是一个例子给我一个想法需要什么)。下表也是一个正在创建的临时表,因此在创建之后我想通过该列!下面显示了创建临时表的代码。
IF OBJECT_ID('tempdb..#LocalTempTable') IS NOT NULL
DROP TABLE #LocalTempTablew
CREATE TABLE #LocalTempTable(
Source varchar(50),
Value int,
Name varchar(150),
Date date)
insert into #LocalTempTable (Source, Value, Name, Date)
SELECT
table1.sourceID,
table2.value,
table1.name,
table2.Timestamp
FROM table1 INNER JOIN
Source ON table1.SourceID = table2.ID
SELECT Name, CASE Name
WHEN 'John' THEN Name = 'Simon'
WHEN 'Carol' THEN Name = 'Mike'
END
FROM #LocalTempTable
但是,当我运行此查询时,它会超时!
答案 0 :(得分:2)
这不需要光标但应该能够执行以下操作:
UPDATE T
SET Name = CASE Name
WHEN 'John' THEN 'Simon'
WHEN 'Carol' THEN 'Mike'
ELSE Name
END
FROM Table1 T
<insert needed join and where clauses as needed>
基本上这会更新整个Table1,但是你可以在更新查询的FROM部分中创建更复杂的连接条件和WHERE;只要你最后更新一个表。