以下查询给了我一个ora-01427 我已经找到了那个异常是什么,以及如何解决它的一些解决方案,但不是在我的情况下。有没有办法可以找出重复的行?
ORA-01427: single-row subquery returns more than one row
01427. 00000 - "single-row subquery returns more than one row"
这是我的问题:
SELECT rec.*,
(select date_tt
from TREATMENT_TERMINAT tr, RECIPIENT rec
where tr.SCANDIANUMBER = rec.SCANDIANUMBER) DATE_TT
FROM RECIPIENT rec;
由于
答案 0 :(得分:1)
可能是这样的吗?
select date_tt, COUNT(*) AS RC
FROM RECIPIENT rec
LEFT JOIN tr ON tr.SCANDIANUMBER = rec.SCANDIANUMBER
GROUP BY date_tt
答案 1 :(得分:1)
使用显式联接,如果可能不匹配date_tt
,可能会离开,只返回列。
SELECT rec.*,
DATE_TT
FROM RECIPIENT rec
left join tr
on tr.SCANDIANUMBER = rec.SCANDIANUMBER
;
旧式连接已过时,请将教你的人加入逗号,将它们插入大炮,并将它们射入太阳。
答案 2 :(得分:1)
据推测,您需要一个相关的子查询。那将是:
select rec.*,
(select tr.date_tt
from TREATMENT_TERMINAT tr
where tr.SCANDIANUMBER = rec.SCANDIANUMBER
) as DATE_TT
from RECIPIENT rec;
请注意从子查询中删除RECIPIENT
。
如果上述问题仍然存在,那么这里有三个解决方案:
and rownum = 1
添加到where
子句。select
更改为select max(date_tt)
。listagg()
获取所有值:select listagg(date_tt, ',') within group (order by date_tt)
。要查找问题行,请使用group by
。以下内容包含所有重复项:
select tr.SCANDIANUMBER
from TREATMENT_TERMINAT tr
group by tr.SCANDIANUMBER
having count(*) > 1;