我正在使用一个通用数据面板,该面板可以具有各种不同的查询来填充该面板.它们可能是从表或视图中选择的简单查询,也可能是用户使用复杂的联接和其他表达式定义自己的复杂查询.我试图修改数据面板,以便如果用户选择一条记录,然后对该表进行排序,那么我会找到该记录现在所在的页面,移至该页面,然后重新选择该记录.

我已经解决了大部分问题,但是我很难找到要移动的页码.我最初只是简单地循环访问数据面板中的行,但是由于页面调度,因此页数越大,效率就越低.相反,我决定直接通过SQL进行此操作,这是我现在遇到的问题.

我决定,如果我可以通过运行产生结果的相同查询来找到所选行的行号,那么我可以计算出我需要移至该页面并跳至该页面的最终页码.我接受了运行以生成结果的查询,并增加了一个变量以获取行号.

原始查询为

select *

from table_a

order by column_c desc

修改后的行号查询变为

select *, (@rownum := @rownum + 1) as rownum

from

(select @rownum := 0) rn

, (

select *

from table_a

order by column_c desc

) data

此时,我正在选择所有记录.然后,我包装上面的查询,并选择记录与我选择的记录匹配的最小行,如下所示

select min(rownum)

from

(

select *, (@rownum := @rownum + 1) as rownum

from

(select @rownum := 0) rn

, (

select *

from table_a

order by column_c desc

) data

) wrapper

where

primarykeyfield1 = ?

and primarykeyfield2 = ?

起初,这似乎是可行的.但是,在测试过程中,我发现,如果我对一个唯一性不够强的字段(例如1000条记录在该字段中具有相同的值)进行排序,则会停止工作.我做了一些挖掘,发现上面的代码每次运行查询时都会返回不同的rownum.

经过一些额外的挖掘,我发现如果要运行以下查询,我会得到想要的结果

select * from table_a order by column_c

但是如果我只是像这样包装该查询

select * from (select * from table_a order by column_c)

每次我运行查询时,记录的顺序都发生了巨大变化.这解释了为什么行num之所以改变是因为实际上它在改变.但是,我无法弄清楚为什么仅通过包装查询即可更改顺序.我已经在其他数据库引擎中完成了此操作,因此我假设它与MySql特别相关,但是我无法找到信息来解释原因.我的推论是,按此类包装在查询中时不应用order by,或者行为不符合预期.

接下来,我尝试将rownum计数直接移到主/基查询中,如下所示

select *, (@rownum := @rownum + 1) as rownum

from (select @rownum := 0) rn, table_a

order by column_c desc

单独运行此查询将创建正确的行号.但是,由于我需要找到所选记录的特定行号,因此必须像这样包装该查询

select min(rownum)

from (

select *, (@rownum := @rownum + 1) as rownum

from (select @rownum := 0) rn, table_a

order by column_c desc

) data

where

primarykeyfield1 = ?

and primarykeyfield2 = ?

一旦这样做,顺序by似乎就会被忽略,它将按记录在表中出现的顺序而不是它们在基本查询中的顺序对事物进行计数.

我感兴趣的是,既要了解数据集排序时没有正确应用数据包排序的根本问题,又要了解潜在的其他解决方案,以查找特定记录所在的页码.

注意,我在最终的外部查询上使用min,因为最终用户可以选择多行,并且所有这些行都进入最终的where子句.因此,我想找到最低的行号并移至该页面.

mysql 根据行号查询_MySql:查找特定记录的行号相关推荐

  1. mysql列转行统计查询_Mysql 列转行统计查询 、行转列统计查询

    Mysql group_concat函数列转行,与行转列 例一: SELECT num from user 1.使用group_concat函数得到列转行 select group_concat(nu ...

  2. mysql数据库实验3查询_mysql数据库(3)-查询

    数据库设计规范 查询 创建数据库.数据表 -- 创建数据库 create database python_test_1 charset=utf8; -- 使用数据库 use python_test_1 ...

  3. mysql连表条件查询_mysql带条件查询,联表查询

    ---恢复内容开始---mysql 1,用于设定所select出来的数据是否容许出现重复行(彻底相同的数据行)sql all:容许出现--默认不写就是All(容许的).spa distinct:不容许 ...

  4. mysql 同表子查询_MySQL 表子查询

    MySQL 表子查询 表子查询是指子查询返回的结果集是 N 行 N 列的一个表数据. MySQL 表子查询实例 下面是用于例子的两张原始数据表: article 表: aidtitlecontentu ...

  5. mysql教程多表查询_mysql重点,表查询操作和多表查询

    表单查询 1. 完整的查询语句语法 select distinct(* or 字段名 or 四则运算 )from 表名 where 条件 group by 条件 having 条件 order by ...

  6. mysql 事b务 查询_MySQL进阶学习笔记二(包括连接查询、子查询、联合查询、事务、存储过程)...

    1.高级查询 (1)了解笛卡尔积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序 ...

  7. mysql关联表分页查询_MySQL一对多分页查询-主表关联表条件查询问题

    文章目录 1 摘要 2 情景复现 2.1 数据模型 2.2 核心代码 2.3 测试数据 2.4 拓展一点 1 摘要 分页查询是后台项目中最常见的一种操作,在一对多(one to many)的关系表中, ...

  8. mysql 索引的模糊查询_MYSQL语法(模糊查询,视图,索引)

    MYSQL语法(模糊查询,视图,索引) 2020年08月11日 | 萬仟网IT编程 | 我要评论 MYSQL模糊查询模糊查询,查询name 以张开头的数据select *from t1 where n ...

  9. mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询

    结构化查询语言(sql) SQL概念和规则 关键字:SQL语言保留的字符串(SELECT FORM) 语句:一条完整的SQL命令(SELECT * FROM dept) 子句:部分的SQL语句,通常由 ...

最新文章

  1. Deep Learning for 3D Point Clouds: A Survey 论文阅读
  2. AI 开发神器来了!支持 CPU 加速优化!!
  3. jvm默认垃圾收集器
  4. 32位JDK和64位JDK
  5. React中useEffect使用
  6. Python学习入门基础教程(learning Python)--5.2 Python读文件基础
  7. AndroidStudio Debug调试使用
  8. Qimage像素级操作
  9. seaweedfs部署及使用(兼容Hadoop)
  10. HMC5883l磁力计数据读取
  11. nvcc fatal : Unsupported gpu architecture ‘compute_30‘
  12. 文献阅读(167)NoC神经网络加速器
  13. 《早秋客舍》赏析-[唐]杜牧古诗
  14. The computer is being attacked
  15. 【计科二班】编程测试题解
  16. ZK 的 Curator java客户端使用实例
  17. 实现美团、饿了么购物车效果,并本地存储相关数据
  18. 分库分表和 NewSQL 到底怎么选?
  19. 无惧黑暗强光,纯视觉导航也能全天候作业
  20. 命不好,因为你同床共枕的人

热门文章

  1. Python中文本文件的编码格式——ASCII编码和UNICODE编码
  2. SRC部落,国家、企业和安全人才的三方求和
  3. 关于Chrome浏览器总提示未安装flash player解决办法
  4. Python使用openpyxl库操作Excel之(一)创建并保存一个Excel文件
  5. 解决google map 卫星图层和电子地图图层偏移问题
  6. 普里姆(Prim)算法(P算法):修路问题
  7. Python源码解读之六 浮点数
  8. 计算机网络 第五/七 版 ----谢希仁
  9. 磷酸铁锂溶液除钙镁技术分析
  10. [衣裳饰品]谈谈西装、手工西装和西装定制_时尚资讯_天涯论坛