使用两个键排序数组,如果一个键的两个值相同,那么使用另一个键?

时间:2014-01-18 05:10:21

标签: php mysql sql select sql-order-by

我有一个php数组,在排序时我必须考虑两个键,如果两个用户的数量相同,那么考虑这些值的另一个键。

实施例。 Table structure for example

$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”)。

3 个答案:

答案 0 :(得分:1)

在查询中使用 ORDER BY ,无需在PHP代码中对数据进行排序,请参阅下面的示例

SELECT * 
FROM users u 
ORDER BY u.count DESC, u.liked_count DESC

它给我这样的东西,Result

答案 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;

此查询对我有用。