Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

想达到的目的是通过计算好的比例 比如10.49%、30%、0.23%这种比例
从数据库查询 此比例的数据记录


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
415 views
Welcome To Ask or Share your Answers For Others

1 Answer

先计算总条数,再乘以比例,得出条数,最后去limit

select round(count(1)*比例) as cnt from tb;
select * from tb limit cnt;

cnt要计算好替换到limit后面才可以。
例如:

select round(count(1)*0.1049) as cnt from tb; //假设结果190172
select * from tb limit 190172;

不知是否有理解错
再来个纯SQL版的,只要传入比例值即可

select *,@i:=@i+1 as idx from tb,(select @i:=0)t where @i<(select round(count(1)*比例值) from tb);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...