源表
Id, Name, Address
1 A #202
1 A #203
1 A #204
2 A #202
目标表
Id, Name, Address
1 A NULL
合并后
Id, Name, Address
1 A #202
2 A #202
我正在使用此SQL
create table #S (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
create table #T (ID int, Name varchar(25) NULL, Address varchar(25) NULL)
INSERT #S values(1, 'A', '#202')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#203')
INSERT #S values(1, 'A', '#204')
INSERT #T values(1, 'A', NULL)
MERGE #T USING
(
Select id, name, address
from #S
) AS S(id,name,address)
on #T.id=S.id and #T.Name=S.Name
when not matched THEN
INSERT values(S.id,S.Name, S.Address)
when matched then
update set Address = S.Address;
GO
Select * from #T
GO
Select * from #S
GO
这会导致错误
消息8672,级别16,状态1,第18行
MERGE语句尝试多次更新或删除同一行。当目标行与多个源行匹配时,就会发生这种情况。MERGE语句不能多次更新/删除目标表的同一行。优化ON子句以确保目标行最多匹配一个源行,或使用GROUP
BY子句对源行进行分组。
我想用三个匹配值中的任何一个用地址值更新A中的行。这该怎么做?
中的四个值中的任何一个#S
都将与目标表的单行值匹配(#S中的所有值都具有id =
1且名称=’A’-因此它们都与目标中的单行匹配),因此此值将被更新四个次-这就是错误的意思,这是绝对正确的。
您真正想要在这里实现什么?
您是否要将“地址”设置为源表中的第一个值?TOP 1
在子选择中使用子句:
MERGE #T
USING (SELECT TOP 1 id, name, address FROM #S) AS S
ON #T.id = S.id AND #T.Name = S.Name
WHEN NOT MATCHED THEN
INSERT VALUES(S.id,S.Name, S.Address)
WHEN MATCHED THEN
UPDATE SET Address = S.Address;
您是否要将“地址”设置为源表中值的随机html" target="_blank">元素?在子选择中使用TOP 1
andORDER BY NEWID()
子句:
MERGE #T
USING (SELECT TOP 1 id, name, address FROM #S ORDER BY NEWID()) AS S
ON #T.id = S.id AND #T.Name = S.Name
WHEN NOT MATCHED THEN
INSERT VALUES(S.id,S.Name, S.Address)
WHEN MATCHED THEN
UPDATE SET Address = S.Address;
如果将四个源行与单个目标行匹配,则永远不会得到有用的结果-您需要知道真正想要的是什么。
马克
这是我的方法: 这是我的测试主测试: db对象工作,打开连接工作,我的find all records方法工作,然后我的deleteOneRecord崩溃。我收到以下错误: 线程“main”中的异常com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以在第1行的“作者”附
我对< code>where子句中的case语句有一些问题。如果有人知道如何解决这个问题,请帮助我!谢谢你。 下面是日志中的错误: 原因:org.hibernate.hql.internal.ast.QuerySyntaxException: 意外的 AST 节点: 和靠近第 1 行, 列 589 [从 com.itengine.bettinggateway.dao.事件中选择 e.事件 tp.事
问题内容: 我在通过mysqli执行准备好的语句时遇到问题。 首先,我正在使Command出现同步错误。我正在存储结果并关闭连接,并且我已经停止获取此错误,因此希望该问题已停止。 但是,我的sql语法错误中的错误又出现了,该错误在命令不同步时可以正常工作。这是我当前的代码: 我已经尝试了许多不同的方法来纠正此snytax错误,从使用CONCAT(由于失败而被注释掉)到在绑定之前为变量分配%符号等,
问题内容: 您好,我是python的新手,想知道您是否可以帮我一些忙。我一直在玩这段代码,似乎无法使其正常工作。 现在,isPrime方法的输出如下: 我确定该函数应返回true,然后应打印“是”。我想念什么吗? 问题答案: 您将放弃递归调用的返回值: 您也想传播递归调用的值,包括一条语句: 现在,您的代码将输出:
代码: 作业: 在直角三角形中,最长边长度的平方等于其他两条边长度的平方之和。编写一个程序,提示用户输入三角形三条边的长度,然后输出一条消息,指示三角形是否为直角三角形。无论输入三条边的长度顺序如何,该程序都可以正常工作。 我的问题:代码无法编译,找到:变量,必需:值 另外:我不知道如何制作,这样程序就可以知道三角形是否正确,即使边没有按顺序给出。请帮忙,我是一个初学者,在这项作业上有很多困难。
mysql数据库里面一个商品表;商品表有200多个字段,有2000万条数据,可是商品分页的时候,sql语句老是出现在慢查询日志里,请教高手如何优化? select * from d_shop order by id DESC limit 200, 220