oracle报单行子查询返回多于1行的错误

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:15:24
执行下面语句时报ORA-01427: single row subquery returns more than one row

UPDATE a
SET a.city = (SELECT DISTINCT b.cityname
FROM datacenter.b
WHERE b.cityname LIKE a.city||'%')
WHERE EXISTS (SELECT 1
FROM datacenter.b
WHERE b.cityname LIKE a.city||'%'
);
请问应该怎么改,谢谢。

UPDATE a
SET a.city = (SELECT DISTINCT b.cityname
FROM datacenter.b
WHERE b.cityname LIKE a.city||'%')

你检查一下
select count(*) from a
是否等于
select count(*) from (SELECT DISTINCT b.cityname
FROM datacenter.b
WHERE b.cityname LIKE a.city||'%');

另外比如
一个数据
b.cityname a.city
9999 9
999
99
这样你的 WHERE b.cityname LIKE a.city||'%' 会返回3行
没有数据 我这也是猜想
可能性很多,自己慢慢找找吧

a.city = (SELECT DISTINCT b.cityname
FROM datacenter.b
WHERE b.cityname LIKE a.city||'%')
.b 把点去掉,然后这个select返回的值你确定最多只有一个吗,要不然多值赋给一个变量那肯定不行,你把like改成=试试