我有一个包含列的表:Sku,Count
在另一个表中有sku有不同的图像,所以在这个表中,一个sku重复多次,有多个文件扩展名,我需要做的是计算sku在第二个表中的图像数量然后使用该编号更新第一个表中的count列。我非常感谢任何帮助。
UPDATE
MediaResource
SET
[mrCount] =
(
SELECT
Count(PartNumber)
)....I don't know how to handle this
答案 0 :(得分:2)
尝试这样的事情:
DECLARE @MediaResurce table (sku varchar(3), CountOf int)
DECLARE @MediaResurce_Pics table (sku varchar(3), ImageName varchar(10))
INSERT @MediaResurce VALUES ('abc',0)
INSERT @MediaResurce VALUES ('mno',0)
INSERT @MediaResurce VALUES ('xyz',0)
INSERT @MediaResurce_Pics VALUES ('abc','a.jpg')
INSERT @MediaResurce_Pics VALUES ('abc','a.gif')
INSERT @MediaResurce_Pics VALUES ('xyz','a.gif')
UPDATE a
SET CountOf=dt.CountOf
FROM @MediaResurce a
INNER JOIN (SELECT
aa.Sku,ISNULL(COUNT(bb.sku),0) AS CountOf
FROM @MediaResurce aa
LEFT OUTER JOIN @MediaResurce_Pics bb ON aa.sku=bb.sku
GROUP BY aa.Sku
) dt ON a.sku=dt.sku
SELECT * FROM @MediaResurce
输出:
sku CountOf
---- -----------
abc 2
mno 0
xyz 1
(3 row(s) affected)
注意:强>
如果您只需要等效的@MediaResurce表来计算@MediaResurce_Pics表的数量,那么我会强烈考虑用视图替换等效的@MediaResurce表。它将自动保持同步而无需触发器。如果您确实需要等效的@MediaResurce表用于其他列,仍请考虑Count列的视图。如果在选择期间需要额外的速度,则可以实现列。
答案 1 :(得分:0)
Update MediaResource
Set mrCount = (
Select Count(*)
From TheOtherTable As T2
Where T2.SKU = MediaResource.SKU
)