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 查询记录 排序之后 查看指定记录 在数据库中位于第几行的主要内容,如果未能解决你的问题,请参考以下文章