Ошибка 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 в подзапросах, чтобы вернуть только одну запись, так как вы используете разные, она может возвратить более одной записи

Другие вопросы по тегам