2013-07-25 125 views
2

遇到问题试图调整什么通常是一个简单的更新从一个表到另一个:SQL Server CE的更新表

UPDATE t2 
SET Country_FK = t1.Country_ID 
FROM dbo.CountryCity t2 
INNER JOIN dbo.Country t1 ON t2.country = t1.ISO 

做了一些研究,SQL Server CE的不喜欢FROM条款在加入。

我似乎无法获得在SQL Server CE上工作的语法权限。

任何建议都是值得欢迎的。

谢谢!

回答

0

是的,根据SQL CE referenceUPDATE不支持FROM子句。你也不能这样做UPDATE CountryCity SET Country_FK = (SELECT Country_ID FROM Country...,因为SET只接受一个标量,SELECT返回一个选择。

你将不得不从

SELECT Country_ID FROM Country c 
INNER JOIN CountryCity cc ON cc.country = c.ISO 
WHERE you need something here to specify one country instead of every country that has any matching ISO 

CountryCity.Country_FK WHERE country = same country you specified above

这在任何脚本或应用程序调用你的SQL命令来完成指定第一个或唯一的价值,它不能被SQL内部完成CE。

+0

好吧,我同意。我听起来像我将不得不编写一些代码来填充CountryCity表中的数据表,循环遍历它,从Country表中找到它的匹配项,获取它的值,为该记录动态创建更新脚本并进行更新。谈论低效率。 –

+0

只有当您希望您的第一个查询返回多个国家/地区,并且您希望将不同的国家/地区分配给不同的“CountryCity”行时,您才需要数据集并循环查看任何内容。如果是这样的话,你将不得不在任何版本的SQL中使用循环或游标(这是内部循环)。 –