关于查询sql中数据上一条记录和下一条记录的sql语句......

string preSql = "select top 1 * from news where news_id < " + id + " order by news_id DESC" string nextSql = "select top 1 * from news where news_id > " + id + " order by news_id ASC" 这是表示查询下一条和上一条 sql记录的语句,那里面的id是怎么确定的,麻烦高手些解决下;说的是什么参数....?????

可用row_number来解决。

如student表

id        name     create_date

1         张三        2015-07-01

2         李四        2015-06-01

3         王五        2015-08-01

4         赵六        2015-04-01


如,要查找张三的create_date前和后各一条数据。

with t as
(select student.*,row_number() over(order by create_date) rn from student)
select * from student where rn=(select t.rn+1 from t where t.name='张三')
union all
select * from student where rn=(select t.rn-1 from t where t.name='张三')

结果应是:

id        name     create_date

2         李四        2015-06-01

3         王五        2015-08-01

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-08
news_id必须是整形,一般来说,这里应该是自增列,通过输入当前的ID,查询比它大的第一条记录,来达到查询下一条的目的,实现方法比较简单和巧妙。
第2个回答  2013-07-08
news_id 自增类型,或者有一定规律的数值类型,外面程序获取的id这个就看你怎么存放了,一般是放在url的参数里,比如 http://www.baidu.com/news.html?id=1
相似回答