今天这个sql语句报了一个单行子查询返回多行的错误select t.*,
(select t_evolve_weekevolve
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1) as weekevolve
from T_MK_PLAN t
where t.t_plan_submitflag <> 0
and t.t_plan_week = 4
and t.t_plan_deptid = 48000147100
and t.T_PLAN_YEAR = 2011
and t.t_sys_flag <> -1
order by t.t_plan_id desc从网上查了一下,看到一个例子
select 名字,姓氏 from 雇员 where 薪金 = (select 薪金 from 雇员 where 部门标识 =20);
这个例子看懂了,但是上面那个是怎么回事?求高手指教。
(select t_evolve_weekevolve
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1) as weekevolve
from T_MK_PLAN t
where t.t_plan_submitflag <> 0
and t.t_plan_week = 4
and t.t_plan_deptid = 48000147100
and t.T_PLAN_YEAR = 2011
and t.t_sys_flag <> -1
order by t.t_plan_id desc从网上查了一下,看到一个例子
select 名字,姓氏 from 雇员 where 薪金 = (select 薪金 from 雇员 where 部门标识 =20);
这个例子看懂了,但是上面那个是怎么回事?求高手指教。
解决方案 »
- plsql developer 里面可以配置tnsnames.ora不?
- windows下诡异的lsnrctl命令
- 我是初学Oracle请大家帮我指条路线
- 如何建立满足如下条件的索引
- 请教一个非固定行列转换sql的写法.
- 请教一句pl-sql语句!
- 在客户端的PL/SQL Developer中看到汉字全部为乱码,因为查不到表V$NLS_PARAMETERS,所以我在客户端修改了注册表,还是乱码
- ORACLE 9I中建表的脚本都 执行了,我的表去哪里能看到啊,在(oem)中
- 高分求助,pro*c程序在运行时报Internal heap ERROR 17160 错误,高人指点一二!
- 如何才能把oracle 9i ,卸载干净,在w2k下?
- 高分求助ORACLE11安装LINUX5时出的问题
- 有一条sql语句不会写了 麻烦大家来帮帮忙 多谢多谢
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1这一条语句返回了多条记录
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1)这个子查询返回了多个结果(即有多条记录满足当前的查询条件),就会出现上述错误。
如果该返回结果,只有一条记录,则不会出现错误。
(select t_evolve_weekevolve
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1) as weekevolve--把这个查询语句的结果作为一个新的列,取名weekevolve
from T_MK_PLAN t
where t.t_plan_submitflag <> 0
and t.t_plan_week = 4
and t.t_plan_deptid = 48000147100
and t.T_PLAN_YEAR = 2011
and t.t_sys_flag <> -1
order by t.t_plan_id desc
(select t_evolve_weekevolve
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1) as weekevolve--把这个查询语句的结果作为一个新的列,取名weekevolve
from T_MK_PLAN t
where t.t_plan_submitflag <> 0
and t.t_plan_week = 4
and t.t_plan_deptid = 48000147100
and t.T_PLAN_YEAR = 2011
and t.t_sys_flag <> -1
order by t.t_plan_id desc
(select t_evolve_weekevolve
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1 and rownum=1 ) as weekevolve
from T_MK_PLAN t
where t.t_plan_submitflag <> 0
and t.t_plan_week = 4
and t.t_plan_deptid = 48000147100
and t.T_PLAN_YEAR = 2011
and t.t_sys_flag <> -1
order by t.t_plan_id desc
from t_mk_mission
where t_evolve_id = t.t_plan_id
and t_evolve_week = t.t_plan_week
and t_sys_flag <> -1
这个子查询也是返回多行,但是整个sql就能执行了,能查询出结果了。