我喜欢对一列进行匹配,并在两个表之间更新另一列的值。让我来演示一下如何更新它。
例子:
--我有下面的表1和表2
表1:
Name Number
--------------
abc 1111
abc 2222
abc 3333
xyz 4444
xyz 5555
xyz 6666
表2:
Name Number
-------------
abc 9999 (already exists, before updated)
abc NULL
abc NULL
abc NULL
abc NULL
abc NULL
abc NULL
xyz NULL
xyz NULL
xyz NULL
xyz NULL
xyz NULL
xyz 8888 (already exists, before updated)
我想在Table1和Table2之间进行匹配,并更新Table2以查找空白(NULL)的匹配名称,以及Table1中的第一个匹配记录。如您所见,"abc"只有3条记录需要更新,并且您只看到表2中的前3个空白(NULL)得到更新。
表2(更新后)
Name Number
--------------
abc 9999 (already exists, before updated)
abc 1111
abc 2222
abc 3333
abc NULL
abc NULL
abc NULL
xyz 4444
xyz 5555
xyz 6666
xyz NULL
xyz NULL
xyz 8888 (already exists, before updated)
我不确定这是否可能。请帮忙。
谢谢
我记不清该如何使用它,直到我重新开始工作,我才有一个例子。。但您可以通过使用光标,一次选择一行,并根据表1中特定行的数据进行更新来实现这一点。。
请参阅msdn上的帮助站点:http://msdn.microsoft.com/en-us/library/ms180169.aspx
更新:
现在,我已经构建了一小段代码,可以满足您的要求;-)见下文。
游标所做的是从表1中逐个检索名称和数字。当您获取了这个名称后,它将更新表2,其中的名称与从表1中获取的名称匹配,并且表2中的数字为空。
DECLARE @name nvarchar(max)
DECLARE @number int
DECLARE name_cursor CURSOR FOR
SELECT name, number
FROM #table1
OPEN name_cursor
FETCH NEXT FROM name_cursor
INTO @name, @number
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE top(1) #table2
SET number = @number
FROM #table2
WHERE
name = @name
and number is null
FETCH NEXT FROM name_cursor
INTO @name, @number
END
CLOSE name_cursor
DEALLOCATE name_cursor
; WITH tbl1 as (
SELECT Name, Number, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Number) rn
FROM Table1)
,tbl2 as (
SELECT Name, Number, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Number) rn
FROM Table2
WHERE Number IS NULL)
UPDATE tbl2
SET Number = tbl1.Number
FROM tbl2
INNER JOIN tbl1 ON tbl2.Name = tbl1.Name AND tbl2.rn = tbl1.rn
我知道以前有人问过这个问题,我已经阅读了很多答案,现在正在研究其中一个答案,但是我需要以下代码的帮助。 我在执行时没有收到任何错误,也没有任何内容提交到mysql表,如果你发现了什么,请告诉我,或者如果有更好的方法,请你给我指一个教程,我还没有太多的PDO或多行更新。 提前谢谢。 致山姆: 产出为:
问题内容: 我在某些列中有一个带有嵌套表的oracle表。现在,我需要能够更新每个嵌套表,主表中每个记录中的所有记录。这是如何完成的?我尝试过的任何一种方法,都会收到有关无法在该视图上执行更新或单行子查询返回多个行的错误。 这是一个例子来说明。我可以运行这样的更新: 但是在这种情况下,table子句是在单行的单个嵌套表上执行的。如果您不只是想要等于2的entity.uidn,将如何执行这样的更新?
假设我有一个员工姓名列表,我想选择具有这些姓名的所有行: 也许简和乔不在这张桌子上。我如何创建一个查询来标识我的列表中根本不存在的项目。 我不是在寻找任何特定的格式作为返回的结果;它可以是逗号分隔的,也可以是具有各自不匹配名称的行列表。
更新记录 V2.0.0 加入寄存器运行模式,可大幅提升热更内数值计算性能 执行性能整体提升,传统非寄存器模式执行效率也得到一定幅度提升 修正热更内finnaly块在一些情况下不正确的bug,连带修复了yield return和async/await的一些异常情况 修正值对类型绑定后的数组进行操作时的异常 修正热更内Enum一些情况下Equals结果错误的bug 修正跨域继承接口时的一些异常情况 修
版本更新记录 2016.09.10 1) 底层组件-新增时间处理集合 2016.09.5 1) 底层组件-优化防刷 2) 底层组件-错误监控 2) 底层组件-优化通过类名绑定相关事件 2016.08.25 1) 底层组件-新增百度统计组件 2016.08.11 1) 底层组件-优化udb定制登录,增加QQ登录 2) 活动组件-新增完成任务组件 2016.08.9 1) 活动组件-新增防刷组件
我想更新值。如何在查询生成器中执行此操作?