我试过寻找其他帮助解决这个问题,但我只是没有得到它。假设我有一张如下所示的表格。在按日期排序并允许重复日期时获取MySQL中的上一个和下一个记录
+----+--------------+------------+
| id | date_col | label |
+----+--------------+------------+
| 1 | 2010-09-07 | Record 1 |
| 2 | 2010-09-03 | Record 2 |
| 3 | 2010-08-23 | Record 3 |
| 4 | 2010-08-23 | Record 4 |
| 5 | 2010-08-23 | Record 5 |
| 6 | 2010-08-12 | Record 6 |
| 7 | 2010-08-06 | Record 7 |
| 8 | 2010-08-06 | Record 8 |
| 9 | 2010-08-02 | Record 9 |
| 10 | 2010-08-01 | Record 10 |
+----+--------------+------------+
查询时,我根据date_col
订购这些记录,并使用id
(或真的任何其他任意列),以帮助重复日期排序。
mysql_query("SELECT * FROM table ORDER BY date_col DESC, id DESC");
然而,当我在一次查询这些记录只有一个,我想有一个和下一个按钮导航到下一个或前一个记录。我的问题是,date_col
允许重复的值,因此,例如,下面的查询对我而言不起作用,当顺序确定下一个记录时。 (假设this_date
是date_col的值,this_id
是价值,我们正在寻找在当前记录的ID)
mysql_query("SELECT id FROM table WHERE date_col > this_date ORDER BY date_col DESC, id DESC LIMIT 1");
即使这不会为我工作:
mysql_query("SELECT id FROM table WHERE date_col > this_date AND NOT id=this_id ORDER BY date_col DESC, id DESC LIMIT 1");
所以我”如果我正在查看id为#4的记录,因为它的排列顺序为date_col DESC id DESC
,以前的记录应该是id#5,下一个记录应该是id#3,但我是根本没有得到这些结果。
有人可以解释如何使这项工作正常吗?任何帮助深表感谢。
啊,感谢亚先生!这实际上有助于为我澄清事情。 – wavematt 2010-09-09 16:31:17