表项(4 列,为清楚起见进行了简化)
记录 | 项目 | 价格 | 区
数据
1 | 100 | 10.00 | 一种 2 | 100 | 空 | 乙 3 | 100 | 空 | C 4 | 200 | 25.00 | 一种 5 | 200 | 空 | 乙
尝试使用基于NULL
的非 s 中的相应值来更新 s 。因此,所有项目 100 的读数均为 10.00,两个项目 200 的读数均为 25.00。NULL
Item
我觉得这应该非常容易,但无法弄清楚自我参考。
谢谢
表项(4 列,为清楚起见进行了简化)
记录 | 项目 | 价格 | 区
数据
1 | 100 | 10.00 | 一种 2 | 100 | 空 | 乙 3 | 100 | 空 | C 4 | 200 | 25.00 | 一种 5 | 200 | 空 | 乙
尝试使用基于NULL
的非 s 中的相应值来更新 s 。因此,所有项目 100 的读数均为 10.00,两个项目 200 的读数均为 25.00。NULL
Item
我觉得这应该非常容易,但无法弄清楚自我参考。
谢谢
给你
UPDATE a
SET a.Price=b.Price
FROM Item AS a
INNER JOIN Item AS b
ON a.item=b.item
WHERE a.Price is NULL AND b.price is NOT NULL
或者如果有多个非空价格并且您想选择最高价格。
UPDATE a
SET a.Price=(SELECT MAX(b.PRICE) FROM ITEM AS b WHERE b.Item=a.Item and b.Price is not null )
FROM Item AS a
WHERE a.Price is NULL
如果您对一个项目有多个价格,则需要选择一个。item
此示例选择最小的一个(列名与表名相同,这有点令人困惑):
UPDATE item i
SET price = (SELECT MIN(price)
FROM item
WHERE item = i.item
GROUP BY item)