我要查一条数据比如id=20
现在我还要查出这条记录的上一条记录和下一条记录
怎么样用sql语句连接一次数据库就同时查出这3条记录?
[b]问题补充:[/b]
id不一定连续,有可能记录删除了呢?
[b]问题补充:[/b]
我现在用的查3次数据库的办法一条一条查,显然很落后!
先进点的办法没有?
[b]问题补充:[/b]
不能是这样的select * from 表名 where id in(20-1,20,20+1);,因为你不能确定上一条记录的id到底是什么,有可能删除过记录,那么这个时候id是18,22呢?
[b]问题补充:[/b]
我承认那样做可行,可语法太长了,万不得已也只能这样了
这样的SQL语句怎么写?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- iteye_18964 2009-09-07 18:01关注
LZ你是用什么数据库?sql2005/mysql 下面是mysql的写法,先查询id=2的记录,在查询id2的最小id联合起来就得出你要的结果啦.sqlserver用top参照下面这种方案可以达到你的需求啊.
SELECT * FROM 表 WHERE id=2
UNION
SELECT A.* FROM(SELECT * FROM 表 WHERE id UNION
SELECT B.* FROM(SELECT * FROM 表 WHERE id>2 LIMIT 0,1) AS B本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 有没有帮写代码做实验仿真的
- ¥15 報錯:Person is not mapped,如何解決?
- ¥30 vmware exsi重置后登不上
- ¥15 易盾点选的cb参数怎么解啊
- ¥15 MATLAB运行显示错误,如何解决?
- ¥15 c++头文件不能识别CDialog
- ¥15 Excel发现不可读取的内容
- ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题