mysql错误:子查询返回超过1行

时间:2012-08-22 11:51:31

标签: mysql mysql-error-1242

我在projections_report paccess_rights a使用了两个表格。我无法找出我收到错误的原因:

  

子查询返回多行

(case when paramChannel='AllC' then p.gl_sal_chan in 
      (case when dc_lob=0 then (select distinct pr.gl_sal_chan from 
          projections_report pr) else (select distinct pr1.gl_sal_chan
                 from projections_report pr1 where pr1.gl_sal_chan 
                 in (select distinct a.gl_sal_chan from access_rights 
                 a where a.userid= paramUserId)) end) 
 else p.gl_sal_chan = paramChannel end)

我尝试使用所有和任何关键字。请帮忙。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我尝试以另一种方式做到并且做对了。首先,我将第二个案例陈述的其他条件中的陈述改为

(select distinct gl_sal_chan from access_rights where userid = paramUserid)

因为两者都返回相同的结果(我的坏),其次我将整个条件更改为

(case when (paramChannel = 'AllC' && dc_lob = 0) then '%' = '%' else 
    (case when (paramChannel='AllC' && dc_lob != 0) then 
    gl_sal_chan in (select distinct gl_sal_chan from access_rights where userid = paramUserid) 
else gl_sal_chan= paramChannel end)end)

无论如何,谢谢@all:)

答案 1 :(得分:0)

子查询中的USE LIMIT只返回一条记录,因为您使用的是distinct,它可能会返回多条记录