【发布时间】:2011-08-12 18:16:23
【问题描述】:
我正在使用 MySQL,并且我有一个在列中有日期的表(我正在为一个班级制作一个截止日期表)。以前我的查询如下:
SELECT * FROM duedates_f2011 ORDER BY anothercolumn
为了防止重复出现(基于到期日期列),我不得不将其更改如下:
SELECT * FROM duedates_f2011 GROUP BY duedate
目前,它保留了相同的订单,但我如何保证它仍然会这样做?我读过的GROUP BY 教程中没有任何内容表明它仍然会对其进行排序,并且之后添加ORDER BY 语句是不正确的。是我遗漏了什么,还是我应该添加其他东西以确保它保持有序?
(如我的标签所示,我正在使用 PHP 运行查询)
【问题讨论】:
-
ORDER BY是您想要的,但由于与GROUP BY相关的其他问题,它可能无法正常工作。您能否用这两个子句显示您的语句并指出SELECT子句中包含哪些列? -
虽然
GROUP BY足以保证和排序(对于 MySQL),但我认为最好的做法是包含ORDER BY子句(这是允许的,并且是您想要的明确文档行以特定顺序返回。请注意,MySQL 与其他数据库引擎不同,后者不保证没有ORDER BY子句的查询的结果集的顺序。(例如,我们观察到旧版本的 Oracle 在 GROUP 中返回行BY 顺序,但这是 group by 操作的副作用,不是保证。更高版本的 Oracle 不会按 GROUP BY 顺序返回行。)
标签: php mysql sql group-by sql-order-by