我需要更新table1中的col1,其中table2中val的最高值低于 表1中的col2。我正在尝试这个:
update table1 set col1 = max(t2.val)
from table2 t2 where t2.VAL < col2
我收到此错误: 聚合可能不会出现在UPDATE语句的集合列表中。
以下是样本数据
Table1
Col1 Col2
2 null
3 null
4 null
6 null
7 null
8 null
9 null
10 null
Table2
Val
1
5
运行查询后,我希望它看起来像这样:
Table1
Col1 Col2
2 1
3 1
4 1
6 5
7 5
8 5
9 5
10 5
答案 0 :(得分:1)
UPDATE t1 SET
modified = a.ddd from t1 t CROSS APPLY (SELECT MAX(t2.price) AS ddd from t2 WHERE t2.price<t.val) a
让我们初始化t1(修改后的字段是max
的t2
值但小于其val
值的
这是你的table1(t2),其值为......
运行查询:...
UPDATE t1 SET
modified = a.ddd from t1 t CROSS APPLY (SELECT MAX(t2.price) AS ddd from t2 WHERE t2.price<t.val) a
这里的值是结果:
答案 1 :(得分:1)
UPDATE t1
SET col2 = (SELECT MAX(Val) FROM dbo.Table2 WHERE Val < t1.col1)
FROM dbo.Table1 AS t1;