比方说程序语言是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%)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)