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

mysql错误:子查询返回超过1行,mysql,mysql-error-1242,Mysql,Mysql Error 1242,我在这里使用了两个表projections\u report p和access\u rights a。我不知道为什么会出现错误: 子查询返回多行 我尝试使用所有和任何关键字。请帮忙 提前谢谢。我试着用另一种方式做,结果做对了。首先,我将第二个case语句的else条件中的语句更改为 (select distinct gl_sal_chan from access_rights where userid = paramUserid) 因为两者都返回相同的结果(我的坏),其次我将整个条件更改为 (

我在这里使用了两个表
projections\u report p
access\u rights a
。我不知道为什么会出现错误:

子查询返回多行

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


提前谢谢。

我试着用另一种方式做,结果做对了。首先,我将第二个case语句的else条件中的语句更改为

(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只返回一条记录,因为您使用的是distinct,它可能会返回多条记录

错误说明了一切,官方文档也对此进行了解释。请共享此查询的所有代码,因为共享代码似乎只是其中的一部分。因此,它可以让观众更好地理解,以更好的方式回答。实际上,子查询必须返回多个记录,因此我使用的是distinct和in关键字。但不管怎样,谢谢,我现在就拿到了@桑什
(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)