2016-12-06 65 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 

这是我的程序查询时,我尝试执行使用select distinct(event_schedule_id)此过程中它的显示错误鲜明不在程序工作在MySQL

错误代码:3065表达式#1的ORDER BY子句不在SELECT 列表中,引用列'TEST_EVENT_LIST_VIEW.scheduleDate',它不是在SELECT列表中的 ;这是不符合DISTINCT

当我删除不同然后其工作正常,请建议我是谁来解决这个问题。

+0

如何解决?首先,你必须弄清楚你想要什么... – jarlh

回答

0

在使用DISTINCT和ORDER BY那么我们必须在SELECT列表如下有ORDER BY列:

要么

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,然后所有的陈述都没有任何复杂性。