Php 如何对下表进行排序&;得到那些前5-5记录,前20-20记录?
此查询给出了奇怪的结果:Php 如何对下表进行排序&;得到那些前5-5记录,前20-20记录?,php,mysql,database,Php,Mysql,Database,此查询给出了奇怪的结果: SELECT `user_id`,`rankType` FROM `ranks` WHERE `user_id` =23 AND (`rankType` = "top5" OR `rankType` = "top20") ORDER BY rankType LIMIT 0 , 30 给你 我想要实现的目标是: 1) 仅获取5条排名前5的记录,20条排名前20的记录 2) 我想以升序显示等级类型的结果(但如果您在演
SELECT `user_id`,`rankType`
FROM `ranks`
WHERE `user_id` =23
AND (`rankType` = "top5"
OR `rankType` = "top20")
ORDER BY rankType
LIMIT 0 , 30
给你
我想要实现的目标是:
1) 仅获取5条排名前5的记录,20条排名前20的记录
2) 我想以
升序显示等级类型的结果(但如果您在演示小提琴中看到,它显示的是适当的,可能只是考虑20和5中的2
)您的结果实际上是升序,因为列rank_类型是varchar
类型,所以在字符串比较中,top20排在top5之前
如果您只想在前5名和前20名之间进行交易,那么肮脏的解决方案可能是:
ORDER BY rankType desc
您的结果实际上是按升序排列的,因为列rank_类型是varchar
类型,在字符串比较中,top20排在top5之前
如果您只想在前5名和前20名之间进行交易,那么肮脏的解决方案可能是:
ORDER BY rankType desc
如果以后要添加另一组排序/筛选列,请将其全部打包为
select * from ( /* previous query goes here */ ) tt
where id > 100
order by id
注意,ranktype
是varchar,所以它是按字典顺序排序的,所以top20
如果以后要添加另一组排序/筛选列,请将其全部打包为
select * from ( /* previous query goes here */ ) tt
where id > 100
order by id
注意,ranktype
是varchar,所以它是按字典顺序排序的,所以top20
ORDER BY FIND_IN_SET(rankType,'top5,top20')
一种可能性是不进行两次查询并合并它们:
ORDER BY FIND_IN_SET(rankType,'top5,top20')
您使用的数据库名为mysql,而不是mysqliDatabase您使用的数据库名为mysql,而不是mysqliNo,因为我还需要处理其他类型的排名不,因为我还需要处理其他类型的排名是的,看起来我们两人同时发布,但他快了一点!是的,看起来我们两个在同一时间发布,但他快了一点!