2013-07-25 165 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中使用循環或遊標(這是內部循環)。 –