根据选择相同的表格进行更新 - AGAIN和AGAIN

时间:2012-06-13 06:49:51

标签: sql-server tsql

在Microsoft SQL Server中:

我已经多次看过这个问题了,但看不到有人解决这个问题:

UPDATE theTable t1
SET t1.col2 =
    (SELECT (10 * (col1 + col2))
     FROM theTable t2
     WHERE t1.busRelAccount = t2.busRelAccount
     AND t2.rowName = 'POS'
    )
WHERE t1.busRelAccount = t2.busRelAccount
AND t1.rowName = 'INVENTORY'
;

任何人在没有使用CURSOR的情况下解决了这个问题并循环使用了表格?

1 个答案:

答案 0 :(得分:6)

不是100%肯定你正在尝试做什么 - 但最有可能的是,你可以更简单地编写你的UPDATE声明 - 这样的事情:

UPDATE t1
SET t1.col2 = 10 * (t2.col1 + t2.col2)
FROM theTable t1
INNER JOIN theTable t2 ON t1.busRelAccount = t2.busRelAccount
WHERE 
    t1.rowName = 'INVENTORY'
    AND t2.rowName = 'POS'
;

基本上,您在两个表之间定义一个JOIN(两者都是同一个表),然后根据t1

中的列定义如何更新t2