我有一张类似
的表格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
只需要更新就可以为每一行添加最大数量
由于
答案 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
您将支付一点性能,但您的数据将是准确的