Ошибка MySQL: подзапрос возвращает более 1 строки
Я использую две таблицы здесь projections_report p
а также access_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 ответа
Я попытался сделать это по-другому и понял это правильно. Во-первых, я изменил утверждение в другом состоянии для второго случая на
(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 в подзапросах, чтобы вернуть только одну запись, так как вы используете разные, она может возвратить более одной записи