MySQL查询当前数据上一条和下一条的记录

如果ID是主键或者有索引,可以直接查找:

方法一:

查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];

查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];

方法二:

查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select max(id) from table_a where id < {$id} [and other_conditions]) [and other_conditions];

查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

select * from table_a where id = (select min(id) from table_a where id > {$id} [and other_conditions]) [and other_conditions];
时间: 2024-10-24 00:43:51

MySQL查询当前数据上一条和下一条的记录的相关文章

Mysql 查询当前数据上一条和下一条的记录

获取当前文件上一条与下一条记录的原理是上一条的sql语句,从news表里按从大到小的顺序选择一条比当前ID小的新闻,下一条的sql语句,从news表里按从小到大的顺序选择一条比当前ID大的新闻. 如果ID是主键或者有索引,可以直接查找: 方法1: [sql] view plain copy 1.select * from table_a where id = (select id from table_a where id < {$id} order by id desc limit 1); 2

mysql选择上一条、下一条数据记录

1.表数据结构 选择mysql记录上一条,下一条sql语句 SELECT * FROM user ORDER BY rank ASC +----+------+---------+ | ID | rank | name | +----+------+---------+ | 1 | 1 | admin1 | | 2 | 2 | admin2 | | 3 | 3 | admin3 | | 4 | 4 | admin4 | | 5 | 5 | admin5 | | 6 | 6 | admin6 |

在MySQL数据库里用一个SQL语句取得本条记录及其上一条和下一条记录

在做文章页面时,有时候需要在文章下面显示出上一条和下一条记录.如果简单地使用id值加1和减1的方法来做会有缺陷. 各位看官请试想,如果我们删除了中间的某一条和某几条记录呢?那不是取不出来了? 所以,思想是很重要的,嗯.举个例子吧,比如说我有一个名叫XXX的表,里面有唯一的id字段.然后,里面有N条数据呢~~~ 现 在,我们来看看我们的思维.我们是要根据已知ID来找上一条和下一条的,也就是在数据库里相邻的三条记录, 中间那一条是确定的.那既然ID有可能不连续, 那我们就用>和<运算符来吧(要是L

如何在MySQL中查询当前数据上一条和下一条的记录

如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from table_a      where id =          (select id from              table_a where id < {$id} [and other_conditions]              order by id desc limit 1      

MySQL查询随机数据的4种方法和性能对比

从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点. 下面从以下四种方案分析各自的优缺点.方案一: 复制代码 代码如下: SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1; 这种方法的问题就是非常慢.原因是因为MySQL会创建一张零时表来保存所有的结果集,然后给每个结果一个随机索引,然后再排序并返回.有几

在多排序条件下SQL获文章上一条、下一条记录

在我们开发CMS系统的时候经常会碰到需要根据当前记录来读取它的上一条记录或下一条记录的现像.单字段排序时SQL语句非常简单,但是当以多字段排序时应该怎么写呢?实际上也复杂,多字段无法搞定那么我们就需要将多个字段合并在一起,形成一个固定长度的字符串,再将这个生成的字符串做为排序字段进行排序.注意,这个排序字符串的长度一定要是固定的,所有记录生成的排序字符串长度一至才能准确进行排序. 表结构: CREATE TABLE [table1]( [Id] [int] IDENTITY(1,1) NOT N

mysql查询结果数据导出 into fileout 和cvs/txt等相关文件导入数据库中

mysql -u用户名 -p密码 mysql> use 数据库 mysql> SELECT columnID,alias,parentID FROM `cms_column` WHERE alias LIKE '%家庭影院%' OR parentID='144500' into outfile '/var/lib/mysql-files/column_rb.xls'; 如果出现如下界面: 如果出现红色框中的错误,说明你的mysql配置文件导入导出权限受限,只能通过 secure_file_pr

MySQL查询长数据是无值返回(可以尝试换行符)

如,要在数据库中包含这样数据的记录有多少条: <table class="link-more-blue" style="width: 100%;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr class="grid-head-wrap"> <td>File Name<

mysql删除重复数据,保留最新的那一条

因为数据库没键外键,在关联查询的时候,会碰到查询条数多余数据库实际条数,这因为关联字段在表中有重复值而导致的. 解决方案: 1.数据库脚本删除重复数据,保留最新的一条 2.对关联字段增加唯一约束 例如: 以下表,部门表的部门编号出现了重复. 首先判断是不是重复 1 select count(*) from department d 2 3 select count(*) from ( select distinct dept_code from department ) 看以上查出来的数量是不是