我正在使用MySQL,并且我有一个表在列中有日期(我正在制作一个类的截止日期表)。以前我的查询如下:
SELECT * FROM duedates_f2011 ORDER BY anothercolumn
为了防止重复出现(基于duedate列),我必须按如下方式进行更改:
SELECT * FROM duedates_f2011 GROUP BY duedate
目前,它保留了相同的订单,但我怎样才能确保它仍然会这样做?我读过的GROUP BY
教程中没有任何内容表明它仍会对其进行排序,之后添加ORDER BY
语句是不正确的。是否有我缺少的东西,或者我还应该添加其他东西以确保它保持有序?
(如我的标签中所示,我使用PHP来运行查询)
答案 0 :(得分:1)
SELECT * FROM duedates_f2011 GROUP BY duedate ORDER BY anothercolumn;
这是根据MySQL manpages。
答案 1 :(得分:1)
如何首先选择分组,然后再按照此顺序执行此操作?
SELECT * FROM
(SELECT * FROM duedates_f2011 GROUP BY duedate) a
ORDER BY anothercolumn
我认为没有任何理由让您按照分组列进行订购。 大胆!需要更多的数据库!它应该屈服于你的每一个心血来潮!
mysql> SELECT Jump FROM YourDatabase;
+----------------+
| Jump |
+----------------+
| How high? |
+----------------+
1 row in set (0.00 sec)
答案 2 :(得分:0)
您可以使用group by ... order by ...
(按此顺序)。如果仅使用group by
,则该列将自动对其进行排序。
但是,如果您想要group by duedate
和order by anothercolumn
,请实现一件事:当您通过duedate进行分组时,sql不知道要为另一列采用哪个值...
修改:来自mysql manual
如果使用GROUP BY,则输出行将根据GROUP BY进行排序 列,就好像你有相同列的ORDER BY一样。