在SQL SELECT上添加行号

好吧,这可能会很简单,但我已经花了4个小时在这个,我放弃问我失踪。我正在做一个SQL SELECT语句:在SQL SELECT上添加行号

"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;

以上是 在SQL SELECT上添加行号 的全部内容, 来源链接: utcz.com/qa/258297.html

回到顶部