在表字段中插入sql查询的结果

时间:2013-12-08 23:42:05

标签: sql sql-server tsql

也许这个问题是重复的,或者我在谷歌的查询不对,但我有问题) 我有3个表: 1.联系(int ID,nvarchar名称) 2. City(int ID,nvarchar Name,int ContCount) 3. Adress(int ID,int CityID,int ContactID,int Year)

ContCount字段 - 其中包含居住在某个城市(City.Name)中的多个联系人。我的查询: SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1

以下是我的问题:我需要在ContCount字段中指定此查询的结果。你能帮助我吗?我该怎么做?

P.S。抱歉我的英文=)

2 个答案:

答案 0 :(得分:1)

如果您使用的是TSQL,则可以使用以下代码保存该变量:

DECLARE @ContCount as INT
SET @ContCount = (SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1)

我不太确定你接下来想做什么,但你可以在接下来写的任何查询中使用它,例如:

DECLARE @ContCount as INT
SET @ContCount = (SELECT COUNT(*) FROM dbo.Adresses WHERE dbo.Adresses.City_ID = 1)
UPDATE City SET ContCount=@ContCount Where ID=1

答案 1 :(得分:0)

或者您可以组合成一个声明。我从来没有在UPDATE语句中使用过CROSS APPLY,但它应该可以工作:

UPDATE c SET ContCount = b.AddressCount
FROM dbo.City c 
CROSS APPLY (SELECT COUNT(1) as AddressCount
             FROM dbo.Address a 
             WHERE a.City_ID = c.City_ID) b

(可选:WHERE c.City_ID = 1