mysql错误:子查询返回多于1行
问题描述:
我在这里使用了两个表projections_report p
和access_rights a
。我无法找出为什么我收到错误:mysql错误:子查询返回多于1行
subquery returns more than one row
(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)
我尝试使用所有和任何关键字。请帮忙。
在此先感谢。
答
我试图用另一种方式来做,并做对了。首先,我改变了声明第二case语句的其他条件
(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: )
答
在子查询中使用LIMIT只返回一个与您使用不同的记录,它可能返回多个记录
+0
实际上,子查询必须返回多个记录,因此我使用的是distinct和in关键字。但无论如何,感谢我现在得到它。 @samsh – Sagar878748
错误说,这一切,和官方的文档也解释了它。 –
请分享此查询的所有代码,因为共享代码似乎只是一部分。所以它可以给观众更好的理解,以更好的方式回答它。 – Sami