使用最大值更新每个代码

时间:2014-12-18 11:12:03

标签: sql sql-update

我有一张类似

的表格
CODE    NUMBER     MAX_NUMBER
1001    1          
1001    2  
1001    3  
1001    4 
1006    1 
1006    2 
1006    3
1008    1
1008    2 

我正在寻找一个更新语句,为每一行的MAX_NUMBER字段设置每个代码的最大数量。因此,例如,在更新完成时,表格应如下所示

CODE    NUMBER     MAX_NUMBER
1001    1          4
1001    2          4
1001    3          4
1001    4          4
1006    1          3
1006    2          3 
1006    3          3
1008    1          2
1008    2          2

我知道以下选择

SELECT CODE, MAX(NUMBER) AS 'MAX'
FROM table
GROUP BY CODE

会给我

CODE      MAX
1001      4
1006      3
1008      2

只需要更新就可以为每一行添加最大数量

由于

1 个答案:

答案 0 :(得分:2)

试试这个(MS-SQL Server)

UPDATE <table> SET max_number=xx.MAX
FROM 
(
    SELECT CODE, MAX(NUMBER) AS 'MAX'
    FROM <table>
    GROUP BY CODE
) xx
WHERE xx.code=<table>.code

另一种方法是创建一个视图和引用,而不是实际的表。

create view TableWithMax
as
select mm.code,mm.number,xx.max as max_number
from mm.table 
join ( 
    SELECT CODE, MAX(NUMBER) AS 'MAX'
    FROM table
    GROUP BY CODE) xx
on xx.code = mm.code

您将支付一点性能,但您的数据将是准确的