我怎樣才能避免在下面的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