表A,有字段id,name, 表B,有id,name,其中B.name中包含A.name,如何更新B.id=a.id where b.name in a.name

2024-12-12 22:12:08
推荐回答(1个)
回答1:

id=(select city.id from address,city where address in (select name from city) 这里出的问题。
因为子查询查出的结果不唯一,但是又要使用查询结果来为更新id,编译器不知道要将多个结果中的哪一个赋值给id,所以报错。

解决方案:
1.子查询改为select city.id from address,city where address in (select name from city and rownum = 1
确保结果唯一。但是这样可能更新的值不是想要的。
2.明确b表中id要更新成a表中的哪个id值。然后重写语句。