如何获取sql中的下一行


How to get the next row in sql

我有一个类似的表

id  |  names  |  value  
1     Vicky       43
2     Erica       23
3     Rueben      33
4     Bob         54
5     Chris       60

然后我根据它们的价值把它们排列好。现在桌子是这样的。

id  |  names  |  value  
5     Chris       60
4     Bob         54
1     Vicky       43
3     Rueben      33
2     Erica       23

现在起点是id 5,它的名称为Chris,值为60。我的目标是,获得id为4、名称为Bob、值为54的下一行。

您只需要限制结果集:

SELECT * from table
ORDER BY value DESC
LIMIT 1, 1

输出:

| ID | NAMES | VALUE |
|----|-------|-------|
|  4 |   Bob |    54 |

在这里打闹。

LIMIT基本上是这样工作的:第一个数字设置起点(0是最小值),第二个数字设置要获取的项目数量(在这种情况下只有一个)。

编辑:

理解这个问题的另一种方式是:给定特定字段的值(例如:值为5id字段)。。。之前的记录是什么?由于我们在数据中有id 4,我们应该返回该id。

这可以通过以下方式实现:

SELECT * from t
WHERE id < 5
ORDER BY id DESC
LIMIT 1

在这里打闹。

通过这种方式,您可以遍历两个顺序(ASCDESC)的结果,还可以获得下一行或前一行(><)。

如果您当前的ID是例如4,则

下一个:

select*from foo where id=(select min(id)from foo which id>4)

上一页:

select*from foo where id=(select max(id)from foo which id<4)

sql服务器:

with temp as
(
 SELECT ROW_NUMBER() OVER (ORDER BY value desc) AS ROWID, * FROM table_name 
)
SELECT * from temp where ROWID=2

mysql:

SELECT * from table
ORDER BY value DESC
LIMIT 1, 1

我觉得这是一个与PHP相关的问题?

如果是这样的话,那么您可以使用PHP的mysql或mysqli_fetch函数来获得您想要的。。。以及一个环路

这是您通过mysql-query 的基本循环

$sql  =  mysql_query( "SELECT * from table ORDER BY value DESC" );
while ( $r = mysql_fetch_array( $sql ) ) {
  echo $r['value'] . "<br />'n";
}

如果你想让它们都在你的支配下,并且能够随意调用其中任何一个,你需要将数据存储在一个可访问的数组中,就像一样

$sql  =  mysql_query( "SELECT * from table ORDER BY value DESC" );
$theData = array();
while ( $r = mysql_fetch_array( $sql ) ) {
  $theData[] = $r['value'];
}

然后,要访问SECOND值,请使用此

echo $theData[1];