2017-08-08 45 views
0

我在mysql表中有一列hiredate。我不得不选择这个列的数据类型作为varchar,因为有时候我将hiredate的值设为'xxxx-xx-xx'或'zzzz-zz-zz',我需要将这些值保存在数据库中。命令通过hiredate DESC不按预期在mysql中工作

我的问题是,当我与

select distinct 
    agentname 
from agentdata 
where hiredate not in ('xxxx-xx-xx','zzzz-zz-zz') 
order by hiredate desc 

条款执行查询,它不返回正确排序数据。但是当我用

select distinct 
    agentname, 
    hiredate 
from agentdata 
where hiredate not in ('xxxx-xx-xx','zzzz-zz-zz') 
order by hiredate desc 

子句执行查询时,它返回了正确的排序数据。

区别在于select语句中只有hiredate字段。我不知道这种Mysql行为的原因。

+0

您向我们展示的两个查询是不同的,并且不返回相同的列。比较他们是有点苹果橙色IMO。 –

+0

是的,这两个是不同的,如果你想正确地对结果集进行排序,那么在select子句中必须有列名?如果我只希望代理人名称按职位排序,该怎么办? str_to_date(hiredate,'%Y-%m-%d')没有为我工作。 – Devendra

回答

1

您需要按日期排序并按日期排序。

ORDER BY str_to_date(hiredate, '%Y-%m-%d') 
+0

对不起,它没有工作:( – Devendra