2012-08-22 132 views
0

我在這裏使用了兩個表projections_report paccess_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) 

我嘗試使用所有和任何關鍵字。請幫忙。

在此先感謝。

+0

錯誤說,這一切,和官方的文檔也解釋了它。 –

+0

請分享此查詢的所有代碼,因爲共享代碼似乎只是一部分。所以它可以給觀衆更好的理解,以更好的方式回答它。 – Sami

回答

0

我試圖用另一種方式來做,並做對了。首先,我改變了聲明第二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: )

0

在子查詢中使用LIMIT只返回一個與您使用不同的記錄,它可能返回多個記錄

+0

實際上,子查詢必須返回多個記錄,因此我使用的是distinct和in關鍵字。但無論如何,感謝我現在得到它。 @samsh – Sagar878748

相關問題