在SQL中更新父属性值

时间:2010-08-18 03:32:42

标签: sql sql-server sql-server-2008 tsql sql-update

我有一个带有2个表的SQL Server 2008数据库。这些表的定义如下:

Device
------
ID
Name
Description
TotalApplications

Application
-----------
ID
Name
DeviceID

我最近添加了“TotalApplications”列,以加快花费太长时间的查询速度。与设备关联的应用程序数量不会经常更改。当它发生时,我需要编写一个触发器来处理这个问题。但是现在,我只需要填充我的数据库。

目前,与每个设备关联的TotalApplications为0.显然,我需要更新所有设备记录的此值。但是,我无法弄清楚如何做到这一点。有人可以解释我如何更新我的设备记录的TotalApplications值吗?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

使用:

UPDATE DEVICE
   SET totalapplications = (SELECT COUNT(*)
                              FROM APPLICATION a
                             WHERE a.deviceid = DEVICE.id)
 WHERE totalapplications = 0

答案 1 :(得分:1)

OMG Ponies 回答肯定​​会有用,但如果这是我的数据库,我会避免添加列并使用触发器。而是使用索引或我无法使用索引到达那里我将使用索引视图。如果您希望我发布,请告诉我。