在紧凑SQL中使用内部联接进行更新

时间:2016-08-09 14:22:44

标签: sql

在访问中,我可以使用:

UPDATE Projects
  INNER JOIN (Images INNER JOIN ImageCrossRef
    ON Images.ImageId = ImageCrossRef.ImageId)
    ON Projects.ProjectID = ImageCrossRef.ProjectId
  SET Images.Folder = [Projects].[Folder];

基于两个内部联接更新表中的字段到另一个字段,但这在Compact SQL中失败。我已经尝试了WHERE EXISTS的各种建议,但似乎没有任何建议。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您应该“明确地”意识到某些类型的查询不是“可直接更新的”。这可能就是其中之一。 Microsoft Access能够做的事情,其他引擎可能没有。 (并且,一个服务器可能接受的SQL语法,另一个服务器可能不接受。)

有时可行的一种可能性是使用“嵌套查询”来提供要更新的记录(Images)的ID以及应插入其中的值。

第二种可能性是使用“存储过程”,它基本上是由SQL服务器执行的小型子程序。该过程中的代码将像以前一样执行SELECT,然后遍历循环中发出单个UPDATE语句的结果集。

我不熟悉 Compact SQL来为你实际编写一个代码示例,但我希望这至少会给你一些思考的选择。 “HTH ......”