按日期排序的MySQL查询不按要求执行

时间:2013-07-30 22:22:41

标签: mysql

我有这个查询,我试图按照他们附加新闻故事的顺序列出一些位置(公园)。以下是查询。

SELECT tpf_news.park_id, date, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name ORDER BY date DESC

内连接仅用于从'park_id'获取公园的名称。我使用过GROUP,因为有些公园附有不止一个故事,我只希望每个公园在列表中显示一次。因为我必须在订购之前进行分组,这意味着查询使用的是最近附近公园的最早日期。因此排序错误。

如何更改此查询,以便每个公园仍然只会列出一次,但会在最近的日期到最早的日期之前正确排序。

感谢。

2 个答案:

答案 0 :(得分:0)

使用max(date)

SELECT tpf_news.park_id, max(date), name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name 
ORDER BY max(date) DESC

答案 1 :(得分:0)

如果您想获得与每个公园相关的最早日期,则需要在该列上执行groupwise minimum。然后您的ORDER BY将按预期工作,因为您的日期正确。

当你执行GROUP BY查询时,如果没有在select子句中的列上指定聚合(例如COUNTMIN),MySQL会选择其中一个要使用其值的行。这很难预测或控制,因此您需要使用分组最大值或最小值,如上面的链接所示。