得到前一条,后一条文章的SQL语句

jz1979 2008-06-16 04:01:01
用的mysql数据库,用下面的sql查出一个list


SELECT NOTICE_ID,NOTICE_TITLE_EN,NOTICE_ORDER,CREATE_TIME,CREATE_USER_ID,FLAG
from
(
(select NOTICE_ID,NOTICE_TITLE_EN,NOTICE_ORDER,CREATE_TIME,CREATE_USER_ID,FLAG from
(
select NOTICE_ID,NOTICE_TITLE_EN,NOTICE_ORDER,CREATE_TIME,CREATE_USER_ID,FLAG from NOTICE where NOTICE_ORDER is not null AND NOTICE_ORDER<>''
order by NOTICE_ORDER, NOTICE_ID desc) as a
)
union all
(select NOTICE_ID,NOTICE_TITLE_EN,NOTICE_ORDER,CREATE_TIME,CREATE_USER_ID,FLAG from
(
select NOTICE_ID,NOTICE_TITLE_EN,NOTICE_ORDER,CREATE_TIME,CREATE_USER_ID,FLAG from NOTICE where NOTICE_ORDER is null OR NOTICE_ORDER=''
order by NOTICE_ID desc ) as b
)
) as c
LIMIT 0,10


list 页面如下

No Title Order Status Create Time

44 test1 1 Active 2008-06-05
40 test img 1 Active 2008-06-04
37 test order111111 1 Active 2008-06-02
39 test session 2 Active 2008-06-03
26 test123 2 Active 2008-05-30
43 English Active 2008-06-05

我想做的是:点击某个标题,在详细页面里,列出此文章的前一条记录,和后一条记录.

如点击No为39的标题时..

在详细页显示:

前一条: 37 test order111111
后一条: 26 test123





...全文
114 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jz1979 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 vivi8233 的回复:]
是id字段 不是no字段
no字段没有顺序 id字段有顺序啊
而且条件直接写limit行数 如
where id >4
limit 1
[/Quote]

在用临时表的情况下吗???
jz1979 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 laorer 的回复:]
我觉得把前一条,后一条的id也一起传到详细页面去
[/Quote]


好像是相对简单一点儿
吐司vivi 2008-06-16
  • 打赏
  • 举报
回复
是id字段 不是no字段
no字段没有顺序 id字段有顺序啊
而且条件直接写limit行数 如
where id >4
limit 1
jz1979 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jason_kou 的回复:]
给个思路,不一定对:
1.新建一个临时表,使其类似于:
ID No Title Order Status Create Time

1 44 test1 1 Active 2008-06-05
2 40 test img 1 Active 2008-06-04
3 37 test order111111 1 Active 2008-06-02
4 39 test session 2 Active 2008-06-03
5 26 test123 2 …
[/Quote]

我试一下
jz1979 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 java2000_net 的回复:]
1 where 对结果集进行过滤
where id >? // 后一个,如果是前一个就是 <?

2 然后 limit 1,1 就行了
[/Quote]

where id >39
limit 1,1

得到的结果id是40

而不是 26 test123
jason_kou 2008-06-16
  • 打赏
  • 举报
回复
给个思路,不一定对:
1.新建一个临时表,使其类似于:
ID No Title Order Status Create Time

1 44 test1 1 Active 2008-06-05
2 40 test img 1 Active 2008-06-04
3 37 test order111111 1 Active 2008-06-02
4 39 test session 2 Active 2008-06-03
5 26 test123 2 Active 2008-05-30
6 43 English Active 2008-06-05
2.然后操作起来应该就没什么问题了
laorer 2008-06-16
  • 打赏
  • 举报
回复
我觉得把前一条,后一条的id也一起传到详细页面去
wxinb 2008-06-16
  • 打赏
  • 举报
回复
可以试一下 limit 哈
老紫竹 2008-06-16
  • 打赏
  • 举报
回复
1 where 对结果集进行过滤
where id >? // 后一个,如果是前一个就是 <?

2 然后 limit 1,1 就行了

jz1979 2008-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 burningice44 的回复:]
你可以在标题处做个超链,链接到action(如果用的是struts的话)
超链中用……action?vid=id 将该条记录的id传到action;
再在action中根据id取出该条记录,
然后将该条记录存入session或request中,
跳转到显示页面,取出即可。
[/Quote]

这个可以做到,,关键的是:

得到

前一条: 37 test order111111
后一条: 26 test123

burningice44 2008-06-16
  • 打赏
  • 举报
回复
你可以在标题处做个超链,链接到action(如果用的是struts的话)
超链中用……action?vid=id 将该条记录的id传到action;
再在action中根据id取出该条记录,
然后将该条记录存入session或request中,
跳转到显示页面,取出即可。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧