我有这条SQL语句更新SQLPLUS中的aisle from table itemloc_tbl
列aisle from table itemloc_tmp
,并且它一直返回像主题中的错误。更新SQL错误ORA-01427:单行子查询返回多个行
更新:从itemloc_tmp
ITEM_ID SID SEC AIS
------------- --- --- ---
0007AAAAAAAAA AA3 12
0007BBBBBBBBB BB2 13
0007CCCCCCCCC CC8 11
这
这是样本数据是来自itemloc_tbl
ITEM_ID SID SEC AIS
------------- --- --- ---
0007AAAAAAAAA
0007BBBBBBBBB
0007CCCCCCCCC
样本这是我的sql语句
UPDATE ct.itemloc_tbl t1 SET
t1.aisle = (SELECT t2.aisle FROM ct.itemloc_tmp t2 WHERE t2.item_id = t1.item_id)
WHERE t1.item_id IN (SELECT t2.item_id FROM ct.itemloc_tmp t2 WHERE t2.item_id = t1.item_id)
所以,我想更新aisle
列n从itemloc_tmp
到itemloc_tbl
,但上述声明不起作用。有人会指出我错在哪里吗?
您的子查询返回多个结果(如错误所示) - 应使用哪个值更新“过道”列?样本数据和预期结果将会很有帮助。 – sgeddes
像错误说:'SELECT t2.aisle FROM ct.itemloc_tmp t2 WHERE t2.item_id = t1.item_id'返回多个行。我猜'item_id'值不是唯一的?这是正常的吗? – sstan
是的,'item_id'和'aisle'不是唯一的。而且,我正试图找到一种方法来更新“过道”。因为,sqlplus似乎没有连接功能 – Alexander