admin

用空行填充查询结果

sql

我有以下查询,可用于返回游戏中的最高分,但如果记录少于10条,我希望将其用空行填充:

SELECT id, MAX(score) mscore FROM scores WHERE id IN (".implode(',', $data).") GROUP BY id ORDER BY mscore DESC"

逻辑是将一组用户ID传递给查询,然后将对得分最高的ID进行排序并形成前十名,许多ID尚无分数,因此仅返回前十名查询3或4行。我要如何填写查询结果,直到我有10个?该ID引用了照片等。


阅读 248

收藏
2021-06-07

共1个答案

admin

就像@Thariaman所说的(+1)在MySql中不要那样做,因为将来麻烦和困难得多。

我会尝试这样的事情(用空键填充数组,因此如果您尝试访问它们(或其他东西),则脚本不会引发警告)

function getMaxScores($gameid) {

    $result = query("SELECT id, MAX(score) mscore FROM scores ".
        "WHERE id IN (".implode(',', $data).")".
        "GROUP BY id ORDER BY mscore DESC LIMIT 10"
    );
    if(count($result) < 10) {
        $result = array_pad($result, 10, array("id" => "", "mscore" => "");
    }
    return $result;
}
2021-06-07