2016-12-06 1 views
-1
if(eventType=1 ) then 
    set @Whereclause=CONCAT(@Whereclause," and scheduleDate > ",@currentdate, " order by scheduleDate "); 
    end if; 
    if(eventType=0 ) then 
    set @Whereclause=CONCAT(@Whereclause," and scheduleDate < ",@currentdate," order by scheduleDate desc "); 
    end if; 
    if(eventType=-1) then 
     set @Whereclause=CONCAT(@Whereclause," order by scheduleDate desc "); 
     end if; 

    set @SqlQuery= CONCAT(" 
select distinct(event_schedule_id) 
from TEST_EVENT_LIST_VIEW ", @Whereclause); 


set [email protected]; 

    if(offsetvalue<recordlimit) then 

     set @QueryfforPagination=CONCAT(@SqlQuery," limit ",recordlimit); 
    PREPARE querystatement FROM @QueryfforPagination; 
    EXECUTE querystatement; 
    DEALLOCATE PREPARE querystatement; 


    else 
     set @QueryfforPagination=CONCAT(@SQLQuery," limit ",recordlimit," offset ",offsetvalue); 
     PREPARE querystatement FROM @QueryfforPagination; 
     EXECUTE querystatement; 
     DEALLOCATE PREPARE querystatement; 

    end if; 


END 

のMySQLの手順で作業されていないこれは手続きの私のクエリで

エラーコード:3065.式#1 ORDER BY句がSELECT リストにない場合は、参照リスト 'TEST_EVENT_LIST_VIEW.scheduleDate'( のSELECTリストにはありません)を参照してください。これはDISTINCTと互換性がありません

私は別個のものを削除してもうまく動作しない場合は、この問題を修正する担当者を教えてください。

+0

修正方法?まず、あなたが望むものを見つけなければなりません... – jarlh

答えて

0

その後、私たちは以下のようにSELECTリスト内の列にORDER BYを持っている必要がありBY DISTINCTとORDER使用している間:

どちらか

order by event_schedule_id desc 

OR

set @SqlQuery= CONCAT(" 
select distinct event_schedule_id, scheduleDate 
from TEST_EVENT_LIST_VIEW ", @Whereclause); 

SELECT DISTINCT A FROM myTable ORDER BY B --It doesn't work 
SELECT DISTINCT A FROM myTable ORDER BY A --It works 
SELECT DISTINCT A, B FROM myTable ORDER BY A, B --It works 
SELECT DISTINCT A, B FROM myTable ORDER BY B --It works 

の場合DISTINCTを上から削除すると、すべての文が問題なく動作します。

関連する問題