分组未按日期正确排序

时间:2013-06-20 12:52:05

标签: mysql

我有一个查询按照最新新闻的顺序列出主题公园。查询如下。

$sql2 = 'SELECT tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name ORDER BY date DESC ' ;
$result2 = $pdo->query($sql2);

直到一个主题公园有一个以上的新闻报道才正常工作,分组的日期是较旧的日期而不是较新的日期,所以主题公园将保持原来的位置,而不是跳到列表的顶部附上一个新故事。如何更改查询以便在最近的日期之前完成分组?

如果需要,下面是显示数据的php foreach。

<?php foreach ($result2 as $row2): ?>
<h4>
<a class="bloglink" href="parknews.php?park_id=<?php echo $row2['park_id'];?>">
<?php echo $row2['name']; ?>
</a>
</h4>
<br>


<?php endforeach; ?>

由于

3 个答案:

答案 0 :(得分:0)

您没有选择日期,因此基本上它将使用“随机”日期。您可以尝试这样选择:

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

这将选择每个组中的最大日期(名称),然后按这些日期排序。

答案 1 :(得分:0)

我刚刚解决了这个问题:

$sql2 = 'SELECT tpf_news.park_id, name
FROM tpf_news
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id GROUP BY name 

ORDER BY min(STR_TO_DATE(date, "%Y-%m-%d"))'

这似乎可以胜任这项工作。 感谢

答案 2 :(得分:0)

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

希望这会有所帮助..