在mysql中 我想用limit输出前5%怎么出

在mysql中 我想用limit输出前5%怎么出,第1张

这样的SQL语句我不是很清楚,我给你提一个笨点的方法吧,

比方说程序语言是PHP,

先用COUNT语句,统计数据表或者数据表里符合条件的总条数,

比方说得到 100,然后乘以 0.05,最终用 $limits = intval(100*0.05)得到整数

再加到SQL语句中:

"select *from table_name order by Project_num desc limit 0, $limits"

"select *from table_name order by Project_num asc limit 0, $limits"

这样子,呵呵。

这里记录一个问题

在MySQL中,我们要查看前3条记录的话,是使用limit

简单的分页也可以使用力limit来完成

这都比较常见,如果我们想要获取数据的前10%呢?

在SQLServer中,我们可以直接使用top 10 percent 就可以了,但在MySQL中,我们得另想办法

前10%的数据,我们得知道数据一共有多少,那我们就知道该获取多少条记录了,然后还得知道记录的行号

@row_num这个变量,是按行来的,所以我们再where条件中使用的时候,他是最后1条记录的行号,及总记录数

总记录数乘以50%,就是前50%的记录数,这样,我们就获取了前X%数据,做完收工。

MySql不支持选取前百分之几的记录,但是可以通过存储过程来实现,请参见下列实验:

查看学生表的总行数:

mysql>select count(*) as rows from students

向变量赋值@percent 取前50%的行数:

mysql>select count(*)*50/100 into @percent from students

预设SQL语句:

mysql>prepare stmt from "select * from students limit ?"

运行预设SQL语句:

mysql>execute stmt using @percent

请参见附图

这样就实现了选取前50%的记录(全部6条记录中的前3条也就是50%)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8672911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存