首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php-mysqli -在sql查询中,如果搜索ID,如何同时获得上面5行和下面5行结果

在SQL查询中,如果要同时获取某个ID的上面5行和下面5行的结果,可以使用LIMIT子句结合UNION ALL操作符来实现。

具体的查询语句如下:

代码语言:txt
复制
(SELECT * FROM 表名 WHERE ID < 当前ID ORDER BY ID DESC LIMIT 5)
UNION ALL
(SELECT * FROM 表名 WHERE ID = 当前ID)
UNION ALL
(SELECT * FROM 表名 WHERE ID > 当前ID ORDER BY ID ASC LIMIT 5)

上面的查询语句中,假设当前ID为X,首先通过第一个子查询获取ID小于X的5行结果,然后通过第二个子查询获取ID等于X的结果,最后通过第三个子查询获取ID大于X的5行结果。使用UNION ALL操作符将这三个子查询的结果合并为一个结果集。

这样就可以同时获取某个ID的上面5行和下面5行的结果。

对于这个问题,腾讯云提供的相关产品是腾讯云数据库MySQL版,它是一种高性能、可扩展的关系型数据库服务。您可以通过腾讯云数据库MySQL版来存储和管理您的数据,并使用PHP的mysqli扩展来与数据库进行交互。

腾讯云数据库MySQL版的产品介绍和链接地址如下:

请注意,以上答案仅供参考,具体的实现方式可能会根据实际情况和需求有所调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

php关于mysqlimysql区别的一些知识点分析

PHP-MySQLi 中有了不少进步,除了透过 Bind Column 来解决上述问题,而且也多援 Transaction, Multi Query ,并且同时提供了 Object oriented...style (下面这段 PHP-MySQLi 范例的写法) Procedural style (上面 PHP-MySQL 范例的写法)两种写法…等等。...这个就有点多馀,不过这其实无关紧要,因为最大的问题还是在于这不是一个抽象(Abstraction)的方法,所以当后端更换资料库的时候,就是痛苦的开始… 于是 PDO 就出现了(备注:目前 Ubuntu ...例如说以 ActiveRecord 为例,如果要实现这样的 SQL 叙述… INSERT INTO `users` (id, name, gender, location) VALUES(1, 'roga...后者语法上是不是简洁很多呢,而且也大幅降低对 SQL 语言的依赖性!

902100

SQL 高级查询 ——(层次化查询,递归)

汽车作为根节点,下面包含发动机车身两个子节点,而子节点又是由其他叶节点构成。(叶节点表示没有子节点的节点) 假如我们要把这些产品信息存储到数据库,会形成如下数据表。 ?...我们用 parent_product_id 列表示当前产品的父产品是哪一个。 那么用 SQL 语句如何进行层次化查询呢?这里就要用到 CONNECT BY START WITH 语法。...如果我们把 START WITH 的查询起点改为 id = 2,重新运行上面SQL 语句将会得到如下结果: ? 因为 id=2 的产品是车身,我们就只能查到车身下面的子产品。...当然,我们可以把查询结果美化一下,使其更有层次感,我们让根节点下面的 LEVEL 前面加几个空格即可。把上面SQL 稍微修改一下。...查询结果如下: ? 可以看到第一列是展示的产品层级,和我们上面查询出来的结果是一致的。 同时使用 WITH 递归时还可以使用深度优先搜索广度优先搜索,什么意思呢?

3.4K10

三高Mysql - Mysql索引查询优化(偏实战部分)

实战部分承接上一篇文章:三高Mysql - Mysql索引查询优化讲解(偏理论部分) (文章内容较长,同时包含较多SQL代码,公众号读者建议“阅读原文”) 前置准备 这里还是要再啰嗦一遍,所有的数据库表均来自官方的...总结 通过上面的案例我们可以从下面的角度思考来如何提升索引查询速度: 使用「覆盖索引」查询方式提高效率,再次强调覆盖索引不是索引是优化索引查询一种方式。 如果数据不只使用索引列那么就构不成覆盖索引。...以下面SQL语句为例,如果是5.6之前的版本虽然他是覆盖索引的查询方式但却是「不能使用索引」的,数据进过索引查找之后虽然store_id是顺序排序的但是film_id是乱序的,索引检索的时候由于没有办法顺序扫描...中间结果集特点 如果中间表比较小则放到内存,判定什么时候会存在于内存Mysql提供了sort_buffer_size的参数,它负责控制中间结果集的大小,如果优化内存需要调整降低这个参数值,但是如果想要优化查询的时间...覆盖索引:覆盖索引是「查询方式」而不是一个索引,指的是一个sql语句中包括查询条件返回结果均符合索引使用条件,当然Mysql5.6之后增加索引下推,满足下推条件的也可以走覆盖索引。

65810

三高Mysql - Mysql索引查询优化(偏实战部分)

理解了上面的这一层意思,再来理解案例67就很简单了,可以看到只多了一个主键列查询。 这里读者可能会觉得你这上面不是说返回结果全是索引列才会覆盖么,怎么加入了主键列还是奏效呢?...总结 通过上面的案例我们可以从下面的角度思考来如何提升索引查询速度: 使用覆盖索引查询方式提高效率,再次强调覆盖索引不是索引是优化索引查询一种方式。 如果数据不只使用索引列那么就构不成覆盖索引。...以下面SQL语句为例,如果是5.6之前的版本虽然他是覆盖索引的查询方式但却是不能使用索引的,数据进过索引查找之后虽然store_id是顺序排序的但是film_id是乱序的,索引检索的时候由于没有办法顺序扫描...中间结果集特点 如果中间表比较小则放到内存,判定什么时候会存在于内存Mysql提供了sort_buffer_size的参数,它负责控制中间结果集的大小,如果优化内存需要调整降低这个参数值,但是如果想要优化查询的时间...覆盖索引:覆盖索引是查询方式而不是一个索引,指的是一个sql语句中包括查询条件返回结果均符合索引使用条件,当然Mysql5.6之后增加索引下推,满足下推条件的也可以走覆盖索引。

71540

4. 自定义DBUtils

但是除了方便之余,我们还要思考一下这个 Apache-DBUtils 是如何实现的。 例如在查询的时候,提供的是可变参数的,那么如何将这些可变参数进行参数的设置,进行查询的呢?...queryRunner.update(sql, "参数1", "参数2", "参数3", "参数4"); 还有如何查询的时候获取字段名,字段个数的呢?...存在的问题 在上面我们描述,可以发现我们想要实现一个自定义的 DBUtils 工具的话,首先要可以知道如何知道查询的 字段名、参数个数等。...元数据在建立框架架构方面是特别重要的知识,下面可以使用数据库的元数据来创建自定义JDBC工具包, 模仿DBUtils. 下面先来介绍一下什么是元数据。 3....1. MyQueryRunner 类,增加查询多条数据的方法 queryList /** * @author Aron.li * @date 2021/1/26 23:36 */ public

68920

性能优化之分页查询

一 背景 大部分开发DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询搜索商品也需要分页查询。...二 分析 如何优化之前我们先来看看一个比较常见错误的写法 SELECT * FROM table where kid=1342 and type=1 order id asc limit...select * from t where kid =3 and type=1 order by id desc 8,2; MySQL 是如何执行上面sql 的?...通过上面的原理分析,我们知道通过常规方式进行大分页查询慢的原因,也知道了提高大分页查询的具体方法 ,下面我们讨论一下在线上业务系统中常用的解决方法。...比如下面的例子 ? order by id desc order by asc 的结果相差7ms ,生产上的案例有limit 100 相差1.3s ,这是为什么呢?留给大家去思考吧。

97940

MySQL的大分页查询如何优化?

一 背景 大部分开发DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询搜索商品也需要分页查询。...二 分析 如何优化之前我们先来看看一个比较常见错误的写法 SELECT * FROM tablewhere kid=1342 and type=1 order id asc limit 149420...select * from t where kid =3 and type=1 order by id desc 8,2; MySQL 是如何执行上面sql 的?...通过上面的原理分析,我们知道通过常规方式进行大分页查询慢的原因,也知道了提高大分页查询的具体方法 ,下面我们讨论一下在线上业务系统中常用的解决方法。...比如下面的例子 ? order by id desc order by asc 的结果相差70ms ,生产上的案例有limit 100 相差1.3s ,这是为什么呢?留给大家去思考吧。

1.6K20

ElasticSearch权威指南:深入搜索(上)

用不了多长时间,就会发现我们想要的更多:希望查询匹配更灵活,排名结果更精确,不同问题域下搜索更具体。 想要进阶,只知道如何使用 match 查询是不够的,我们需要理解数据以及如何能够搜索到它们。...实际应用,我们很有可能会过滤多个值或字段。比方说,怎样用 Elasticsearch 来表达下面SQL ?...这就是说, match 查询主要的应用场景就是进行全文搜索,我们以下面一个简单例子来说明全文搜索如何工作的: 1....在这个例子如果需要1或2个子句,如果有3-9个子句,则除了25%之外都需要,如果有9个以上的子句,则除了3个子句外都需要。 处理百分比时,负值可用于边缘情况下获得不同的行为。...4.组合查询 组合过滤器 ,我们讨论过如何使用bool过滤器通过 and 、 or not 逻辑组合将多个过滤器进行组合。查询,bool查询有类似的功能,只有一个重要的区别。

4K31

MySQL分页性能优化指南

实际上,这个查询语句参数都没有问题,因为它用到了下面表的主键,而且只读取15条记录。...我们可以通过下面查询很容易的获取总的记录数。 SELECT COUNT(*) FROM city; 然而,上面SQL采用InnoDB为存储引擎时需要耗费9.28sec。...高效的计算行数 如果采用的引擎是MyISAM,可以直接执行COUNT(*)去获取行数即可。相似的,堆表也会将行数存储到表的元信息。...Mark Callaghan发表过一篇类似的博客,利用了组合索引两个位置变量,但是基本思想是一致的。 如果的记录很少被删除、修改,还可以将记录对应的页码存储到表,并在该列上创建合适的索引。...A.id=B.ID WHERE page=$offset; 还有另外一种与上种方法比较相似的方法来做分页,这种方式比较试用于数据集相对小,并且没有可用的索引的情况下—比如处理搜索结果时。

1.1K80

优化MySQL的分页

实际上,这个查询语句参数都没有问题,因为它用到了下面表的主键,而且只读取15条记录。...我们可以通过下面查询很容易的获取总的记录数。 SELECT COUNT(*) FROM city; 然而,上面SQL采用InnoDB为存储引擎时需要耗费9.28sec。...高效的计算行数 如果采用的引擎是MyISAM,可以直接执行COUNT(*)去获取行数即可。相似的,堆表也会将行数存储到表的元信息。...Mark Callaghan发表过一篇类似的博客,利用了组合索引两个位置变量,但是基本思想是一致的。 如果的记录很少被删除、修改,还可以将记录对应的页码存储到表,并在该列上创建合适的索引。...A.id=B.ID WHERE page=$offset; 还有另外一种与上种方法比较相似的方法来做分页,这种方式比较试用于数据集相对小,并且 没有可用的索引的情况下—比如处理搜索结果时。

2.5K30

Elasticsearch 快速开始

但有时,它又是动词,比如我们增加更新文档时,常会说索引一个文档,在这种情况下,可以把它理解为存储文档并使其可搜索。 那如何索引一个文档呢?...pretty 更新类似,删除也可以根据查询结果执行删除,API 是 _delete_by_query。如果是删除索引的所有文档,直接删除索引更直接点。...上面设置 size 为 0,是为隐藏搜索结果内容,仅仅显示聚合结果。 我们可以在前面的聚合结果的基础上,计算 top 10 的账户余额平均值。...下面这个例子演示了如何按年龄区间分组,比如 20-29、30-39 40-49,并在基础上,继续按性别分组。最后,计算各个分组 balance 的平均值。...总的来说,上面的例子还是比较循环渐进的。但主要还是集中使用层面,并没有太多细节的介绍。如果想了解更多与聚合相关的内容,可自行查询官方文档。

1.7K30

SQL基础【二十、索引】(超细致版本,前理论,后实践,应对sql面试绰绰有余)

只有当你确信从dmvs获得的信息是准确完整的,你才能变更数据库或者应用程序代码。 下面就看一下dmv到底能带给我们那些好的功能呢?... ,         indexes.index_id 返回查询结果: user_seeks : 通过用户查询执行的搜索次数。   ...在上面的步骤,对ProductID = 112的每个主键记录(这里是400),SQL Server引擎要搜索400次聚集索引树以检索查询中指定的其它列(SalesDate,SalesPersonID)...如果非聚集索引页包括了聚集索引键其它两列(SalesDate,,SalesPersonID)的值,SQL Server引擎可能不会执行上面的第34步,直接从非聚集索引树查找ProductID列速度还会快一些...SQL运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引; 如果这些结果查询编译时就能得到,那么就可以被SQL优化器优化,使用索引,避免表搜索,因此将SQL重写成下面这样: select

1K20

SQL必知必会》读书笔记

> 4 GROUP BY parent_category_id HAVING count(*) >= 4; /* 23 */ 虽然havingwhere没有严格的SQL规范如何使用,但是更多的时候...对于部分数据库处理支持去重之外,支持返回指定数量的结果,比如SQL SERVER的 TOP函数。 计算字段 如何拼接字符?拼接字符的方式有两种:“||” 符号 "+" 符号。...) and a2 in (1,2,3) 这种形式的组合其实也比较常见,比如我们电商搜索商品的时候会选择指定的电器种类,然后选几个固定的区间,加上“包邮”,“免运费”等等Tag之后,基本能出现类似上面查询效果...通常我们使用 in 的查询如果在子查询结果里面有null会被排除,因为这里的in只会拿出结果为true的数据,所以最终结果是对的也是正常的(如非必要尽量避免使用子查询,此处仅仅做展示),现在我们换一种写法对上面的...可能会有读者认为上面结果是除开id为2的其他两条记录,结果大相径庭,对于这个结果答案是 「unkdown」 的问题,我们可以把上面sql语句看作是下面的写法: select id,username,

80820

SQL必知必会》读书笔记

> 4 GROUP BY parent_category_id HAVING count(*) >= 4; /* 23 */ 虽然havingwhere没有严格的SQL规范如何使用,但是更多的时候...对于部分数据库处理支持去重之外,支持返回指定数量的结果,比如SQL SERVER的 TOP函数。 计算字段 如何拼接字符?拼接字符的方式有两种:“||”符号 "+"符号。...and a2 in (1,2,3) 这种形式的组合其实也比较常见,比如我们电商搜索商品的时候会选择指定的电器种类,然后选几个固定的区间,加上“包邮”,“免运费”等等Tag之后,基本能出现类似上面查询效果...通常我们使用 in 的查询如果在子查询结果里面有null会被排除,因为这里的in只会拿出结果为true的数据,所以最终结果是对的也是正常的(如非必要尽量避免使用子查询,此处仅仅做展示),现在我们换一种写法对上面的...可能会有读者认为上面结果是除开id为2的其他两条记录,结果大相径庭,对于这个结果答案是 unkdown 的问题,我们可以把上面sql语句看作是下面的写法: select id,username,password

74510

MySQL性能优化的最佳20+条经验

因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例: 上面两条SQL语句的差别就是 CURDATE() ,MySQL的查询缓存对这个函数不起作用。...EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何搜索排序的……等等,等等。...下面的这个示例,我们忘记加上了group_id索引,并且有表联接: 们忘记加上了group_id索引,并且有表联接: 当我们为 group_id 字段加上索引后: 我们可以看到,前一个结果显示搜索了...比如:有一个“学生表”有学生的ID,有一个“课程表”有课程ID,那么,“成绩表”就是“关联表”了,其关联了学生表课程表,成绩表,学生ID课程ID叫“外键”其共同组成主键。 9....16、区分inexists,not innot exists select * from 表A where id in (select id from 表B) 上面sql语句相当于 select *

56510

触类旁通Elasticsearch:搜索

如果结果集合不断增加,获取某些靠后的翻页将会成为代价高昂的操作。(SQL延迟关联的思想应该也可用于ES,先搜索出某一页的ID,再通过ID查询字段。)...注意,如果在返回结果某些字段的值为null,缺省在ES返回的_source根本就不会出现该字段名称,这点与SQL是不同的。...二、查询过滤器 查询过滤器功能上类似于SQL查询的where子句,都是起到按查询条件筛选文档的作用,但它们评分就机制搜索行为的性能上有所不同。...下面查询搜索同时包含“Elasticsearch”“Denver”关键词的结果: curl '172.16.1.127:9200/get-together/_search?...,如果搜索name“c”“e”之间的文档,可以使用下面搜索: curl '172.16.1.127:9200/get-together/_search?

3.2K30

分表处理设计思想实现

比如,目前保存用户分表有两个表,一个是user_1表,还有一个是 user_2 表,两个表保存了不同的用户信息,user_1 保存了前10万的用户信息,user_2保存了后10万名用户的信息,现在如果同时查询用户...我下面要讲述的两种分表方法我自己都没有实验过,不保证准确能用,只是提供一个设计思路。下面关于分表的例子我假设是一个贴吧系统的基础上来进行处理构建的。...看了上面的表结构,会明显发现,“版块表”中保存了一个"table_id"字段,这个字段就是用于保存一个版块对应的主题回复都是分表保存在什么表里的。...LIMIT 10 这样就能够获取这个主题下面回复列表,方便我们进行查看,如果需要查看某个主题下面的回复,我们可以继续使用版块表中保存的“table_id”来进行查询。...继续拿上面的贴吧来说,每个贴吧有版块名称版块ID,那么这两项值是固定的,并且是惟一的,那么我们就可以考虑通过对这两项值的一项进行一些运算得出一个目标表的名称。

38610
领券