使用 PDO 获取记录在 SQL 结果中的位置

当直接在 SQL 中注入时,此查询有效。有任何替代方法可以使它与一个查询一起使用,而不是两个吗?

$Get= $db->select("SET @row_number = 0; SELECT (@row_number:=@row_number + 1) AS num, score, points, connected FROM info WHERE id='$id' ORDER BY score DESC");

如果我SET @row_number = 0;在 PHP 中删除它可以工作,但它不会给我输出num..它保持空白


摇曳的蔷薇
浏览 106回答 1
1回答

侃侃无极

如果您使用的是 MySQL 8+,则只需使用ROW_NUMBER():SELECT    ROW_NUMBER() OVER (ORDER BY score DESC) num,    score,    points,    connectedFROM infoWHERE id = ?ORDER BY score DESC;如果你想要一个可以在不支持 MySQL 的早期版本上工作的版本ROW_NUMBER,那么你可以使用相关的子查询:SELECT    (SELECT COUNT(*) FROM info i2 WHERE i2.score >= i1.score) num    score,    points,    connectedFROM info i1WHERE id = ?ORDER BY score DESC;上述查询只有在每个分数都是唯一的情况下才能正常工作,也就是说,没有重复的分数。
打开App,查看更多内容
随时随地看视频慕课网APP