MySQL按DESC排序记录排序。没有丢失的记录w / sort ASC?

时间:2012-01-15 02:10:07

标签: php mysql sql sorting

我将不会发布我的大量代码块,而只是开始我发布的内容。

我正在运行此查询:

...
SELECT id, Title, images, recdate, 'item' AS type
  FROM ads_list
 WHERE to_days(now())<= (to_days(recdate)+14)
 ORDER BY recdate DESC
 LIMIT $offset, $listsperpage
...

这是一个分页脚本。我的 $ offset 只是当前记录位置的计数, $ listsperpage 被设置为每页的任意数量(并且设置为24)。所以每页应该有24个结果...

一切都工作得很好除了,当我在DESC中运行我的查询通过recdate排序时,第一页上我的数组中只输出了23条记录?

如果我使用ASC排序,,每页上有24条记录按预期显示。

我的recdate字段的格式如下:

2012-01-14 07:10:33
2012-01-14 07:10:35
2012-01-14 07:10:38
2012-01-14 07:10:30 ...

我还试图通过id(auto)进行DESC排序,但第一个结果数组只包含23条记录,但总数组都是预期的记录。

我发现第一个结果中的“缺失”记录实际上是向前推进的,所以就好像DESC的结果只有差距。并且该数组被完全推送到最后一个结果页面。所以所有项目都被移动到它出现的一个插槽。

我不想发布我的整个代码块,因为它很多,我花了几个小时测试并尝试我的代码的变体,所以我真的认为它与SQL排序有关。

我无法看到我的DESC会导致这种奇怪现象并且ASC排序显示正常。

1 个答案:

答案 0 :(得分:0)

终于想到了这个噩梦!

我仍然无法解释为什么会这样,但至少我现在得到了完整的预期结果。

在我的while循环中,我检查$ list [“images”]!=“”。我在recdate上使用DESC排序时结果是,有一个空白数组值,因此它的计算结果为true并从页面中“删除”该列表。所以我添加了$ list [“images”] ==“”,现在显示该数组项的图像和数据。