更新 TableA.FK 值 TableB.PK WHERE TableA.Column = TableB.Column

Posted

技术标签:

【中文标题】更新 TableA.FK 值 TableB.PK WHERE TableA.Column = TableB.Column【英文标题】:UPDATE TableA.FK VALUES TableB.PK WHERE TableA.Column = TableB.Column 【发布时间】:2012-04-28 17:01:07 【问题描述】:

我正在尝试合并来自不同数据库、ServerDB 和 ClientDB 的表并保存到 ClientDB,其中客户端的表包含主表记录以及用户可能添加的任何记录。另一方面,服务器表也可以更新(插入新记录)。

数据库有关系。 TableA 中我要 INSERT INTO 值的列是链接到 TableB 的 PrimaryKey 的 ForeignKey,它是一个自动增量列。

我将两个数据库中的所有记录保存在一个合并的数据集中,由于数据库设计限制,我需要先清除客户端上的两个表,然后再从数据集中插入合并的表。

我首先更新了TableB(PrimaryKey自增列的那个),但是现在该列的值与TableA上的ForeignKey无关,所以我更新了TableA并在ForeignKey列中临时插入了值TableB的PK的第一条记录。现在我需要使用 TableA PK 列中的正确值更新 TableA foreignKey 列。每个表上还有第三列具有相同的值。

sql语句的语法应该是什么?如果我没有多大意义,请告诉我,我会发布更好的说明。

【问题讨论】:

你能显示你的表结构和你当前的查询吗?并参阅Working with the INSERT statement in SQL Server 了解INSERT 语句可以做什么的入门 嘿,马克,我现在很着急,没有时间发布表格结构。明天我会发布它。顺便说一句,这是2张桌子。我需要这样的东西:INSERT INTO TableA Column VALUES (SELECT id FROM TableB WHERE TableA.column = TableB.column GROUP BY id)。这是一个有效的声明吗? 这不是很有效的语法(它很接近),但是这是否是对您的要求有意义的查询真的取决于您的意思。如果TableB中的值与TableA中的值匹配,为什么需要涉及TableB?显示具有相关上下文的实际结构,以及一些示例数据来准确描述您正在尝试做的事情,与模糊的单词问题相比将非常有帮助...... 【参考方案1】:

这是一个令人困惑的问题,但我认为您正在谈论将表 1 中的值插入到表 2 中,其中表 1 的值等于表 2 的值,此操作的 sql 查询是

INSERT INTO emp (empno,ename)
SELECT t2.deptno, 
       t2.dname 
FROM   dept t2 
       LEFT JOIN emp t1 
         ON t2.deptno = t1.deptno 

在此查询表 1 (emp) 中将插入 2 个值到列 (empno 和 ename) 中 表 2 (dept) 和连接在 (deptno) 上,这两个表中都存在。

如果这没有帮助,您可以进一步询问。

【讨论】:

这非常接近我的需要。原来我需要一个 UPDATE 命令,INSERT INTO 将在我的表中插入新行。你能发布这个查询的更新版本吗? 在与 OleDbException 挣扎了几个小时后设法使其工作:操作必须使用可更新的查询。我将在新评论中发布答案。【参考方案2】:

感谢大家的帮助。在“OledbException Operation must use an updateable query”挣扎了一段时间后,我在类似的主题中找到了解决方案:SQL Update woes in MS Access - Operation must use an updateable query

这就是成功的查询:

UPDATE DISTINCTROW PlaylistsSongs
    INNER JOIN PlaylistsNames ON PlaylistNames.PlaylistName = PlaylistsSongs.PlaylistName
SET PlaylistID = PlaylistNames.ID

【讨论】:

以上是关于更新 TableA.FK 值 TableB.PK WHERE TableA.Column = TableB.Column的主要内容,如果未能解决你的问题,请参考以下文章

滑块更新选择值现在获取选择值来更新滑块值?

Mysql如何更新字段值

bs datepicker的值更新但显示值不更新

从 DropdownItems 中选择值后,DropdownButton 值未更新。如何使用 selectedValue 更新默认值?

oracle 把一个字段的值更新另一个字段。

mysql如何根据一列值更新另一列的值?