mysql 查询记录 排序之后 查看指定记录 在数据库中位于第几行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 查询记录 排序之后 查看指定记录 在数据库中位于第几行相关的知识,希望对你有一定的参考价值。

SELECT * FROM `dede_archives` ORDER BY goodpost DESC
这个是按goodpost大小进行排列 排列之后 如何查询指定ID在数据库中排行第几?
如果goodpost值一样,便把这些一样的 按ID值从小到大进行排列

1.创建一个测试版图表

创建表test_limit(idint,值varchar(100)),如下图。

2.插入测试数据度,知道6条记录;

Insertintotest_limitvalues(1,“v1”);

Insertintotest_limitvalues(2、“v2”);

Insertintotest_limitvalues(3,'thev3);

Insertintotest_limitvalues(4,'thev4');

Insertintotest_limitvalues(5v5);

Insertintotest_limitvalues(6'6');

3.查询表全数据,共可以找到6个数据,选择*fromtest_limitt,如下图。

4.编写正确的语句,指定3条需要查询的数据;

Select*fromtest_limitlimit3;

参考技术A SELECT count(*) from (SELECT * FROM `dede_archives` ORDER BY goodpost DESC) as a where goodpost >= (SELECT goodpost from `dede_archives` where id = 'ID')追问

请问如果goodpost值是一样呢?如果是一样 能把这些一样的 按id顺序排列吗

追答

你是想得到查询指定ID在数据库中排行第几?还是想得到排行?还是说goodpost值
相等时,把ID的值从小到大排序,然后再得到ID在数据库中排行第几?

追问

数据库 有id goodpost 字段
传入一个ID值,如 2

得到这ID在数据库中的排名(这个排名是根据goodpost 从大到小)
但有的记录goodpost值是一样的 如id3.id4一样是5 排名就一样了 所以当遇到这种值一样的 就按ID排列

id3 id4值都是5 那排名 ID3是第五名 ID4就得是第六名了

追答

select (num1+num2+1) as Tnum from
(SELECT count(*) as num1 from (SELECT * FROM `dede_archives` ORDER BY goodpost DESC) as a where goodpost > (SELECT goodpost from `dede_archives` where id = 'ID') ) as b,
(SELECT count(*) as num2 from (SELECT * FROM `dede_archives` ORDER BY goodpost DESC) as a where goodpost = (SELECT goodpost from `dede_archives` where id = 'ID') and id < ID) as c

本回答被提问者采纳

mysql 500W条记录查询大概多长时间

//首先你的先插入500w条数据,我在mysql中建了一张表,只建了两个字段。程序跑了1个小时发生了
//Java.lang.OutOfMemoryError: Java heap space  溢出现象,所以不整了浪费时间,自己算一下,
//可能我电脑不好,1000条要执行这么久
//程序执行时间:31433
public static void main(String[] args) throws Exception 
           
                long start=System.currentTimeMillis();
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/test";
                String username="root";
                String password="root";
                Connection conn=DriverManager.getConnection(url,username,password);
               
                for(int i=0;i<5000000;i++)
                  PreparedStatement ps = (PreparedStatement) conn.prepareStatement("INSERT INTO mysqltest (NAME) VALUES ('张三');");
                  int rs = ps.executeUpdate();
                
                long end=System.currentTimeMillis();
                
                System.out.println("程序执行时间:"+(end-start));
            
//你自己运行一下。
//堆空间溢出,可以去看看这里:

参考技术A 通今博古 古调单弹 弹尽粮绝

以上是关于mysql 查询记录 排序之后 查看指定记录 在数据库中位于第几行的主要内容,如果未能解决你的问题,请参考以下文章

SQL

如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型

mysql中,怎样查询一个表中有多少记录!

如果未指定“排序依据”,查询会为您的记录集选择啥顺序?

关于mysql的查询优化

mysql怎么指定查询一张表的查询结果,如最后5行记录和最前5行记录