如何使用不同表的最大值更新表?

时间:2012-02-07 21:45:16

标签: sql-server

我需要更新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

2 个答案:

答案 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值的

enter image description here

这是你的table1(t2),其值为......

enter image description here

运行查询:...

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

enter image description here

修改

这里的值是结果:

enter image description here

答案 1 :(得分:1)

UPDATE t1
    SET col2 = (SELECT MAX(Val) FROM dbo.Table2 WHERE Val < t1.col1)
    FROM dbo.Table1 AS t1;