我有一个php数组,在排序时我必须考虑两个键,如果两个用户的数量相同,那么考虑这些值的另一个键。
实施例。
$result = $client->getTopUsers();
for($i = 0; $i < count($result); $i++)
{
if($result[$i]['count'] == $result[$i + 1]['count'])
{
if($result[$i + 1]['liked'] > $result[$i]['liked'])
{
$result[$i + 1]['rank'] = $i-2;
$result[$i]['rank'] = $i + 1;
} else
{
$result[$i]['rank'] = $i;
}
} else
{
$result[$i]['rank'] = $i;
}
$result[$i]['rank'];
}
在上面的图片中,最后2个条目的数量是相同的,所以我希望我的排名符合likes_count。这是我到目前为止所尝试的但是我没有得到预期的结果(“RANK”)。
答案 0 :(得分:1)
在查询中使用 ORDER BY ,无需在PHP代码中对数据进行排序,请参阅下面的示例
SELECT *
FROM users u
ORDER BY u.count DESC, u.liked_count DESC
它给我这样的东西,
答案 1 :(得分:0)
可能这可以解决您的问题
select rownum as rnk,field_1,field_2 from (select * from table_name order by key_field1,key_field2 desc limit 10) order by rownum ;
答案 2 :(得分:0)
select *
from veer_user_details
order by count desc, liked_count desc;
此查询对我有用。