MySQL查询忽略order by子句

时间:2014-02-07 09:08:20

标签: mysql

出于某种原因,这个查询不起作用 - 它没有给出任何错误,但是没有首先放置没有值的字段/ 0000-00-00:

SELECT 
  id,
  uid,
  employer,
  cid,
  slug,
  startdate,
  enddate,
 `position`,
  pid,
  tasks,
  subordinates,
  salary,
  country,
  info,
  files,
  added 
FROM
  career 
WHERE uid = '172' 
ORDER BY (enddate IS NULL),
  enddate DESC

enddate字段格式为DATE /' YYYY-MM-DD',如果为null,则为'' 0000-00-00'。

2 个答案:

答案 0 :(得分:0)

我认为您的orderby不正确,请尝试删除(enddate IS NULL) - 然后应该正确排序。

如果你想先使用NULL,可以考虑做两个查询。

一个enddate为null - 在where子句中,一个enddate不为null。

答案 1 :(得分:0)

好的,找到了解决方案:

SELECT ...  ORDER BY IF(enddate='0000-00-00', 0, 1), enddate DESC

谢谢!