读书人

单行子查询返回多行解决思路

发布时间: 2012-03-12 12:45:33 作者: rapoo

单行子查询返回多行
今天这个sql语句报了一个单行子查询返回多行的错误

SQL code
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);
这个例子看懂了,但是上面那个是怎么回事?求高手指教。

[解决办法]
SQL code
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
[解决办法]
根据你的条件T_MK_PLAN 表中的一条数据,在 t_mk_mission表中有多条数据对应。
[解决办法]
(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)

这个子查询返回了多个结果(即有多条记录满足当前的查询条件),就会出现上述错误。
如果该返回结果,只有一条记录,则不会出现错误。
[解决办法]
探讨
select t.*,--查询 T_MK_PLAN 表(别名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--把这个查询……

[解决办法]
能上几行数据看看么
[解决办法]
这种情况有可能是数据问题,除了异常.先检查数据是否合法.

如果合法,只能修改语句了

读书人网 >oracle

热点推荐