首先,SQL中交换列值可以使用以下语句:
update dbo.T1 set c1=c2,c2=c1;
逻辑上应该假设所有操作同时发生,就好像整个操作完成前不会修改表,然后计算结果替换源数据。
所以,类似的,以下语句:
update dbo.T1 set c1=c1+(select max(c1) from dbo.T1);
将更新T1中的所有行,为c1列加上更新开始时T1中最大的c1值。你不用担心最大的c1值会随着操作进行而持续变化,因为该操作会瞬间发生。
首先,SQL中交换列值可以使用以下语句:
update dbo.T1 set c1=c2,c2=c1;
逻辑上应该假设所有操作同时发生,就好像整个操作完成前不会修改表,然后计算结果替换源数据。
所以,类似的,以下语句:
update dbo.T1 set c1=c1+(select max(c1) from dbo.T1);
将更新T1中的所有行,为c1列加上更新开始时T1中最大的c1值。你不用担心最大的c1值会随着操作进行而持续变化,因为该操作会瞬间发生。