Sql Sybase to Netezza-尝试使用多个联接行中的值更新目标行

Sql Sybase to Netezza-尝试使用多个联接行中的值更新目标行,sql,sybase,migrate,netezza,Sql,Sybase,Migrate,Netezza,im正在将过程从sybase导出到netezza,在某些过程中,有一个查询不断向我提供“更新已取消:尝试使用多个联接行中的值更新目标行” 两个数据库上的数据和表结构是相同的,该查询在Sybase上工作,但在Netezza上不工作 UPDATE table1 t1 SET t1.column1=t2.column1 FROM table2 t2 WHERE t1.column2=t2.column2; 如果数据和查询相同,会导致此错误的原因是什么 之所以会出现这种情况,是因为表1中至少有一行与表

im正在将过程从sybase导出到netezza,在某些过程中,有一个查询不断向我提供“更新已取消:尝试使用多个联接行中的值更新目标行” 两个数据库上的数据和表结构是相同的,该查询在Sybase上工作,但在Netezza上不工作

UPDATE table1 t1 SET t1.column1=t2.column1
FROM table2 t2
WHERE t1.column2=t2.column2;

如果数据和查询相同,会导致此错误的原因是什么

之所以会出现这种情况,是因为表1中至少有一行与表2中的至少两行进行了连接,这导致了关于哪个值应该在第1列结束的混淆

例如:

select * from table1;
 COLUMN1 | COLUMN2
---------+---------
       1 |       1
(1 row)

select * from table2;
 COLUMN1 | COLUMN2
---------+---------
       3 |       1
       2 |       1
(2 rows)


UPDATE table1 t1 SET t1.column1=t2.column1
FROM table2 t2
WHERE t1.column2=t2.column2;

ERROR:  Update canceled: attempt to update a target row with values from multiple join rows
表1中的column1是否应设置为2或3尚不清楚,因此给出了错误并回滚事务

然而,我无法解释sybase为什么允许这样做