也许这个问题是重复的,或者我在谷歌的查询不对,但我有问题) 我有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。抱歉我的英文=)
答案 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
)