我环顾四周似乎无法找到答案,但如果我公然忽视它,请随时指出我。
我有一个更新表的查询。更新取决于表的顺序。
SQL更新语句是否逐行直接通过表? Update语句是直接从表中查看每一行,还是从“缓存的选择”中查看。在开始时执行的表格。我在桌面上有数据级联,我不确定它是否能正常工作。
其次,要执行此更新,我使用Update
- From
语句,其中表连接到另一个,然后返回自身。在更新发生之前,order by
语句是否会对数据进行排序,或者执行其他操作?
我正在使用SQL server 2008 r2。
更新:这与我问here的另一个问题有关。 此更新适用于以下数据:
Id1 Id2
-----------
100 50
120 70
70 50
34 20
50 40
40 10
总体而言,应该将信息从Id1更新为Id2,以便上述内容将进行更新,以便有效地更新以下数据,这是上述内容的缩减:
Id1 Id2
-----------
100 10
120 10
34 20
我看过它并假设,嘿,如果它在desc中从上到下工作,那么就不必担心这样做,因为更新将按顺序发生,任何人都可以通过。但显然这不正确。
答案 0 :(得分:1)
如果您需要按特定顺序更新,请使用光标:
declare myCursor cursor
for select * from myTable1 t1
inner join myTable2 t2 on t1.id = t2.fid
order by t1.id /* <==== */
for update of t1.col1, t1.col2
open myCursor
fetch next from myCursor /* optional into clause */
while @@fetch_status = 0
begin
update myCursor set col1 = /* Some expression */, col2 = /* Some expression */
fetch next from myCursor /* optional into clause */
end
close myCursor
deallocate myCursor