的结果如果任何人都可以,甚至只是帮助我词组这个问题更好,我将不胜感激。SQL服务器 - 更新所有的记录,每组,子查询
我有一个SQL Server表,让我们把它的汽车,其中包含约占它们的主人,包括car_id,owner_accountNumber,owner_numCars项目和信息的条目。
我们正在使用的排序基于拥有的汽车数“所有者importantness”,并依赖于owner_numCars列这样做的系统。如果合理可行,我宁愿不调整这一点。
有没有一种方法,我可以使用存储过程更新每owner_accountNumber owner_numCars?也许一些其他更有效的方式,我可以完成每个owner_numCars包含每个owner_accountNumber的条目数?
现在我能想到做到这一点的唯一方法是(从C#应用程序):
SELECT owner_accountNumber, COUNT(*)
FROM mytable
GROUP BY owner_accountNumber;
,并通过查询
UPDATE mytable
SET owner_numCars = <count result>
WHERE owner_accountNumber = <accountNumber result>
返回然后的foreach排但这似乎疯狂与使服务器处理逻辑和更新相比效率低下。
编辑 - 感谢所有帮助。我知道这不是一个很好的建立数据库,但这是我必须与之合作。我感谢大家的意见和建议。
您有一个有效的观点,如果您想要维护数百万条记录并且缓存了非标准化值,那么在插入/更新/删除期间最好保持该值。并且有一个地方可以在存储过程中进行。但是,在一次处理单个owner_accountNumber时,派生列与窗口函数的差异仍然不会很大。展开您的答案并展示如何编写存储过程。或者我通常不喜欢说这是一个触发器。因为SP除非使用自定义类型,否则不允许多行更改 – Matt
是的,我明白了你的观点。我不会这样设计它。我想到触发器,但不想在这里讨论这个话题。 – LAS
同意我做几乎所有可能的东西,远离触发器,尤其是在处理数百万行时:) – Matt