我有一个在Oracle中遇到此问题的代码:“单行子查询返回多个行”当我仅使用内联代码时,它就起作用了
我只尝试了下面的内联代码,它正常工作
select TO_CHAR(TO_DATE(theDATE,'DD.MM.YYYY HH24:MI', 'NLS_DATE_LANGUAGE =
NORWEGIAN'),
'DD/MM/YYYY')
from mastertable
但是通过组合两个select语句,代码组合无法正常工作
SELECT aircraft
, country
, (select TO_CHAR(TO_DATE(theDATE,'DD.MM.YYYY HH24:MI', 'NLS_DATE_LANGUAGE
= NORWEGIAN'),
'DD/MM/YYYY')
from mastertable )
FROM mastertable
FULL OUTER JOIN continent ON mastertable.id = continent.id
答案 0 :(得分:1)
你为什么不简单
SELECT m.aircraft,
c.country,
to_char(to_date(m.thedate, 'dd.mm.yyyy hh24:mi', 'nls_date_language = norwegian'), 'dd/mm/yyyy') the_date
FROM mastertable m full outer join continent c on m.id = c.id;
我的意思是,您试图(滥用)查询的目的是什么?
此外,THEDATE
的数据类型是什么?看起来像VARCHAR2
;是吗? NLS_DATE_LANGUAGE
在这里有什么好处?您只需要处理个数字(没有月或日的名称),就可以简化为
to_char(to_date(m.thedate, 'dd.mm.yyyy hh24:mi'), 'dd/mm/yyyy')
答案 1 :(得分:0)
您需要将子查询限制为仅一个ID作为
SELECT aircraft,
country,
(select TO_CHAR(TO_DATE(theDATE,
'DD.MM.YYYY HH24:MI',
'NLS_DATE_LANGUAGE
= NORWEGIAN'),
'DD/MM/YYYY')
from mastertable
where id = m.id
)
FROM mastertable m
FULL OUTER JOIN continent c
ON m.id = c.id
假定ID是主键列。