求一条sql语句 根据一个编号查询这个编号的前一条数据和后一条数据

feifei623 2010-12-27 09:43:38
求一条sql语句 根据一个编号查询这个编号的前一条数据和后一条数据

如 一张新闻表:

id title content
1 aa aa
2 bb bb
3 cc cc
5 dd dd
7 ee ee

根据 编号为:5 去查询新闻的详情

查出来的结果我想知道 编号为5的上一条新闻是什么?下一条新闻是什么?

...全文
232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 feifei623 的回复:]
1楼 2楼的我会,但是我想用一条sql语句查询出来

正如1楼说的:是想做类似于网页页面中的“上一条”“下一条”显示模块;
[/Quote]

select top 100 percent * from (select top 1 * from tb where id < 5 order by id desc) union all
select top 100 percent * from (select top 1 * from tb where id > 5 order by id ) t
Passage2011 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 joyhen 的回复:]
C# code
if (myListDs.Tables[0].Rows.Count > 0)
{
if (myListDs.Tables[0].Rows.Count == 1)
{
paramPritID = "";
p……
[/Quote]
程序实现还是用这个,
不可能单独写一条SQL语句去查询
billpu 2010-12-27
  • 打赏
  • 举报
回复
select top 1 * from tb where id < 5 order by id desc
union all
select top 1 * from tb where id > 5 order by id
feifei623 2010-12-27
  • 打赏
  • 举报
回复
1楼 2楼的我会,但是我想用一条sql语句查询出来

正如1楼说的:是想做类似于网页页面中的“上一条”“下一条”显示模块;

dawugui 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
SQL code
CREATE TABLE [tb]
(
[编号] VARCHAR(10) NULL ,
[价格] VARCHAR(10) NULL ,
[供应商] varchar(100) NULL
)
GO

INSERT INTO [tb] ([编号],[价格],[供应商])
SELECT '01','1.15','供应商A' U……
[/Quote]
不好意思.
这是回复这里的:http://topic.csdn.net/u/20101227/09/dceb4c60-903b-494a-bf2e-ad6c108b69f7.html?seed=1262030740&r=70836120#r_70836120
dawugui 2010-12-27
  • 打赏
  • 举报
回复
CREATE TABLE [tb]
(
[编号] VARCHAR(10) NULL ,
[价格] VARCHAR(10) NULL ,
[供应商] varchar(100) NULL
)
GO

INSERT INTO [tb] ([编号],[价格],[供应商])
SELECT '01','1.15','供应商A' UNION
SELECT '02','1.1','供应商A' UNION
SELECT '02','1.1','供应商G' UNION
SELECT '03','1.3','供应商A' UNION
SELECT '04','1.2','供应商A'
GO

select 编号 , 价格 , min(供应商) 供应商 from tb group by 编号 , 价格 order by 编号 , 价格

drop table tb

/*
编号 价格 供应商
---------- ---------- ----------------------------------------------------------------------------------------------------
01 1.15 供应商A
02 1.1 供应商A
03 1.3 供应商A
04 1.2 供应商A

(所影响的行数为 4 行)
*/
dawugui 2010-12-27
  • 打赏
  • 举报
回复
--上一条新闻
select top 1 * from tb where id < 5 order by id desc
--下一条新闻
select top 1 * from tb where id > 5 order by id
joyhen 2010-12-27
  • 打赏
  • 举报
回复
if (myListDs.Tables[0].Rows.Count > 0)
{
if (myListDs.Tables[0].Rows.Count == 1)
{
paramPritID = "";
paramPritTitle = "";
paramNextID = "";
paramNextTitle = "";
}
else
{
for (int i = 0; i < myListDs.Tables[0].Rows.Count; i++)
{
if (Request["id"].Length > 0)
{
if (myListDs.Tables[0].Rows[i]["id"].ToString() == Request["id"])
{
if ((i - 1) < 0)
{
paramPritID = "";
paramPritTitle = "";
}
else
{
paramPritID = myListDs.Tables[0].Rows[i - 1]["id"].ToString();
paramPritTitle = myListDs.Tables[0].Rows[i - 1]["title"].ToString();
}
if ((i + 1) >= myListDs.Tables[0].Rows.Count)
{
paramNextID = "";
paramNextTitle = "";
}
else
{
paramNextID = myListDs.Tables[0].Rows[i + 1]["id"].ToString();
paramNextTitle = myListDs.Tables[0].Rows[i + 1]["title"].ToString();
}
}
}
else
{
if ((i - 1) < 0)
{
paramPritID = "";
paramPritTitle = "";
}
else
{
paramPritID = myListDs.Tables[0].Rows[i - 1]["id"].ToString();
paramPritTitle = myListDs.Tables[0].Rows[i - 1]["title"].ToString();
}
if ((i + 1) >= myListDs.Tables[0].Rows.Count)
{
paramNextID = "";
paramNextTitle = "";
}
else
{
paramNextID = myListDs.Tables[0].Rows[i + 1]["ID"].ToString();
paramNextTitle = myListDs.Tables[0].Rows[i + 1]["title"].ToString();
}
}
}
}
}
else
{
paramPritID = "";
paramPritTitle = "";
paramNextID = "";
paramNextTitle = "";
}
joyhen 2010-12-27
  • 打赏
  • 举报
回复
楼主的意思是想做类似于网页页面中的“上一条”“下一条”显示模块是么。这个你把表查出来,然后去遍历就可以了,注意表数据的判断
feifei623 2010-12-27
  • 打赏
  • 举报
回复
其实我自己写出来了,但是还是把分给7、9楼 跟我写的差不多

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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