【发布时间】:2014-08-25 09:05:05
【问题描述】:
我的数据库中存储了几个值作为 DATETIME 数据类型 (YYYY-MM-DD HH:MM:SS),我一直在尝试按降序排列它们- 从最大到最小(在日期的情况下 - 从最新到最旧),但奇怪的是,它似乎完全忽略了 DESC 运算符的存在。
SQL 查询(缩写):
SELECT post_datetime FROM post WHERE type=`published` ORDER BY post_datetime DESC LIMIT 3
然后,它们按以下顺序打印:
2014-04-30 11:55:11
2014-07-01 12:25:40
2014-07-02 12:28:03
(这些恰好也是数据库中“最旧”的日期条目)
解决方案?我会注意到在其他事物(例如普通数字)上使用 DESC 也不起作用。我检查了我的语法,尝试了引号,没有引号,双引号等等。
(注意 - 我将在几个小时内无法回答任何其他问题,但我会在返回后尽我所能回复)
(2017 年 6 月 11 日)
编辑:为了澄清,对于未来的读者,语法错字与问题无关,是我在输入示例时的错误。我一直在使用自制的查询生成器,以至于当时我忘记了正确的语法。问题在于我的程序逻辑——而不是查询。上面的示例已经过编辑,对于任何希望执行上述任务的人来说,是正确的解决方案。很抱歉,这篇文章的浏览量已超过 5 万次……但现在你知道了。
【问题讨论】:
-
该查询应该至少抛出一个语法错误(考虑到在
ORDER BY和LIMIT之后使用=),并且一个错误抱怨它找不到标记为的列'post_datetime DESC'。您应该先尝试解决此类错误。