我有以下查询,可用于返回游戏中的最高分,但如果记录少于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引用了照片等。
就像@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; }