更新 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的主要内容,如果未能解决你的问题,请参考以下文章
从 DropdownItems 中选择值后,DropdownButton 值未更新。如何使用 selectedValue 更新默认值?