可以结合limit实现,相当于分页。
....WHERE date='dateVal' AND index<'indexVal' ORDER BY index ASC LIMIT 1; #上一条
....WHERE date='dateVal' AND index>'indexVal' ORDER BY index ASC LIMIT 1; #下一条
....WHERE date='dateVal' AND index<'indexVal' ORDER BY index ASC LIMIT 1; #上一条
....WHERE date='dateVal' AND index>'indexVal' ORDER BY index ASC LIMIT 1; #下一条
解决方案 »
- 我凌乱了,简单的表单提交,怎么也搞不定!
- PHP扩展中如何获得会话的用户名及IP地址?
- php+mysql一、防止不断刷新,如何设置访问间隔为3S。二、多个客户端需不需要多个线程?
- history.go(-1)问题??
- 传参数的问题,请高手帮忙
- 如何在成员函数 __set()中,判断某个属性是否是类中存在的呢?举例如下:
- 小弟向各位求教了:php遍历完文件后执行遍历的文件
- PHP如何判断COOKIE是否为空?
- 英文Windows2000 Advanced Server,IIS安装php不能装载php_oci8.dll
- 哪位能给提供一些关于“域名注册whois查询”方面的编程资料
- 单域名,多VPS怎么配置?
- php过滤掉无法识别的问号字符
关于上一单、下一单,我们要考虑一种极端情况,我以上一单为例说一下:
一般情况下,所谓上一单就是date不变的情况下,index-1(考虑充分一点,万一index不连贯,就取比index小一点的),但是,如果index本来就是那一天最小的呢?这时,就要考虑到date先选前一天的(如果前一天没有,则要选再前一天的),然后在date固定的情况下,选index最大的一个
下一单也是类似的道理。
麻烦就麻烦在这里。
那你这个就得结合程序去实现了,以上一单为例如下:
$sql = "SELECT date, index FROM table WHERE date='dateVal' AND index<'indexVal'
ORDER BY index ASC LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_row($result); //这里是正常情况,既有值
if(empty($row)){ //所谓的极端情况来了。。,既上一个有单日期的最后一单
$sql = "SELECT date, index FROM table WHERE date<'dateVal'
ORDER BY date,index DESC LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
}
print_r($row);