我怎样才能避免在下面的T-SQL语句复制的子查询:更新子查询中的多个列?
update r set
column1=(select top 1 max(column1) from region r2 where (overlapping test conditions)),
column2=(select top 1 max(column2) from region r2 where (overlapping test conditions))
from region r
基本上,我有一个包含矩形区域的表。对于每个重叠区域,我需要将某些列设置为该重叠区域的聚合值。
感谢
编辑:我在这里增加一个过于简单化的重叠条件:
(r.left >= r2.left and r.left < r2.right) or (r.right <= r2.right and r.right > r.left)
的一点是:r和R2将在子查询中被引用。看起来这是普通表格表达的完美情况,但我无法弄清楚如何在每条记录中使用它。
*重叠测试条件*会是什么,并且它们是否相符欢欣鼓舞?你可以使用单个子查询吗? – 2010-01-19 18:20:38
@astander:图像一堆r.left> r2.left和r.top> r2.top ...;你不想重复的东西。 – Codism 2010-01-19 18:28:40
你可以添加这些问题中的子句。如果他们都一样,这将改变我们看问题的方式。 – 2010-01-19 18:41:34