在 SQL Server 2008 中更改行
Posted
技术标签:
【中文标题】在 SQL Server 2008 中更改行【英文标题】:Altering rows in SQL Server 2008 【发布时间】:2013-12-04 00:12:23 【问题描述】:我有一个有 4 列的 table1:ID, TIME, QUANTITY, STATUS
。目前有 50 行填充了字段 ID, TIME
和 STATUS
,每行的 STATUS
列是 NULL
。
我有另一个 table2 有 2 列:ID
和 STATUS
。该表有 150 行,其中每个 ID
都有一个对应的 STATUS
值。
对于table1中的每个ID
,我想在table2中找到ID
,在table2中找到对应的STATUS
值,然后根据对应的ID
将该STATUS
值插入到合适的行中表 1 中的值。
我觉得这应该相当容易,但我尝试过的所有 3 种方法都失败了。任何帮助表示赞赏,谢谢!
【问题讨论】:
【参考方案1】:加入表格并更新:
UPDATE table1
SET
table1.STATUS = table2.STATUS
FROM
table1 JOIN table2 ON table1.ID = table2.ID
只有当 ID 值已经存在于 table1 中时,这才会明显起作用。
【讨论】:
感谢您的回复。 ID 值确实存在于 table1 中。当我运行它时,我得到消息 4104“无法绑定多部分标识符“t1.STATUS”。”有任何想法吗?谢谢! 是的。只需三次检查所有名称 我很确定(现在无法检查)UPDATE 子句不接受表别名,所以上面的查询应该是UPDATE table1 SET STATUS = t2.STATUS FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.ID = t2.ID;
谢谢@Greenstone,刚刚去掉了表别名。反正这里不需要别名。
做到了。我在正确的语法上跳来跳去一段时间,并不能完全确定它。谢谢大家欣赏!以上是关于在 SQL Server 2008 中更改行的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server R2 2008中的SQL Server Management Studio 阻止保存要求重新创建表的更改问题的设置方法