在SQL Select上添加行号



好吧,这可能非常简单,但是我花了4个小时为此,我放弃了问我缺少的东西。我正在做一个SQL选择语句:

"SELECT username, id, Days FROM Users ORDER BY Days DESC";

非常简单。但是现在,使用此信息显示我的所有数据时:

if ($result->num_rows > 0) {
echo "<table><tr><th>ID</th><th>Name</th><th>Days</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
    echo "<tr><td>" . **$row["id"].** "</td><td>" . $row["username"]. "</td><td>" . $row["Days"]. "</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}

我希望第一个替换粗体$row['id']为行号。

我尝试了所有以下所有内容:

SELECT *, number = ROW_NUMBER() OVER (ORDER BY Days) FROM Users AS rownumber ORDER BY Days;

SELECT ROW_NUMBER() OVER (Order by Days) AS 'RowNumber', username FROM Users
SELECT  username, Days, id, ROW_NUMBER() OVER(ORDER BY Days) AS 'RowNumber' FROM Users";

^^所有这些都是我在互联网上找到的东西。没有人工作。我在这里盲目地错过了一些明显的东西吗?

如果您使用的是编程语言,则可以使SQL保持简单:

"SELECT username, id, Days FROM Users ORDER BY Days DESC";

然后使用编程语言处理行号:

if ($result->num_rows > 0) {
$rowNumber=0;
echo "<table><tr><th>ID</th><th>Name</th><th>Days</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
    $rowNumber++;
    echo "<tr><td>" . $rowNumber "</td><td>" . $row["username"]. "</td><td>" . $row["Days"]. "</td></tr>";
}
echo "</table>";
} else {
echo "0 results";
}

mySQL不支持诸如row_number之类的分析查询(窗口函数) - 因为您必须使用Oracle(如果您想要Oracle Corp中的某些东西)。

我不会使用数据库;修改您的前端代码以输出一个增量数字,因为它将行倒入html-这是演示代码的任务,而不是SQL查询

您可以使用变量。这通常有效:

SELECT (@id := @id + 1) as id, username, Days
FROM Users u CROSS JOIN
     (SELECT @id := 0) params
ORDER BY Days DESC;

相关内容

  • 没有找到相关文章

最新更新