UPDATE table1 FROM table2(使用 Sql Server Compact)

Posted

技术标签:

【中文标题】UPDATE table1 FROM table2(使用 Sql Server Compact)【英文标题】:UPDATE table1 FROM table2 (using Sql Server Compact) 【发布时间】:2015-08-21 13:37:31 【问题描述】:

我想从[From] 表中的行更新[To] 表中的行,其中键相等。所以这就是我要做的:

UPDATE [To]
SET    [To].[Name]      = [From].[Name],
       [To].[Size]      = [From].[Size],
       [To].[Something] = [From].[Something]
FROM   [From]
WHERE  [To].[Id] = [From].[Id];
go

问题是,CE doesn't support FROM in the UPDATE command。

那么,如何更改此语法以在 CE 中工作?

【问题讨论】:

How to do Sql Server CE table update from another table的可能重复 @TTeeple 不,这不是一个骗局,因为该答案不起作用,它与 Abhishek 的答案相同,但不起作用。 这个怎么样? ***.com/questions/6933686/… 没用过 CE,但你能不能把它变成两个语句,一个 SELECT 到变量并在 UPDATE 中使用? @MattAllwood 也许我不知道。我希望我可以一步完成,因为我需要在 EF 迁移Sql() 调用中执行此操作。两个步骤将引入另一个问题。 【参考方案1】:

试试下面的sn-p(未测试)-

UPDATE [To]
SET    [To].[Name]      = [From].[Name],
       [To].[Size]      = [From].[Size],
       [To].[Something] = [From].[Something]
WHERE EXISTS (SELECT 1 FROM [FROM] WHERE [To].[Id] = [From].[Id])

【讨论】:

不,它说The column name is not valid. [ Node name (if any) = From,Column name = Name ] UPDATE需要为来自[FROM][TO]UPDATE时,这似乎不能在单个查询中完成>。根据建议,需要将值存储在某个变量中,然后使用该变量进行更新。 你会怎么做? @hbob - CE 的限制迫使您分两步进行更新,要么选择存储两个表之间匹配的值,然后进行简单更新,要么首先根据加入条件,然后做一个新的插入。问题是我没有任何方便的 CE 系统可以测试并让您知道,所以我的所有解决方案可能看起来都含糊不清。【参考方案2】:

更新到 设置为.fld1 = from1.fld1 从表 1 到内连接表 from1 on to.id = from1.id

【讨论】:

以上是关于UPDATE table1 FROM table2(使用 Sql Server Compact)的主要内容,如果未能解决你的问题,请参考以下文章

关于sqlserver某个字段的update更新操作

Oracle中的 UPDATE FROM 解决方法

Mysql select id from table1 and select count(id) from table2

sqlite多表关联update

MYSQL中 select * from table1 t1, table2 t2 where t1.name= t2.name

MYSQL UPDATE 查询多个值