如何获取sql中的下一行

时间:2013-12-03 02:59:46

标签: php mysql 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的下一行。

4 个答案:

答案 0 :(得分:7)

您只需要限制结果集:

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

输出:

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

小提琴here

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

修改

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

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

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

小提琴here

通过这种方式,您可以在两个订单(ASCDESC)中遍历结果,并同时获取下一个或上一个(><)行。< / p>

答案 1 :(得分:1)

sql server:

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

答案 2 :(得分:0)

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

如果是这样,那么你可以使用PHP的mysql或mysqli_fetch函数来获得你想要的东西......以及循环

这是你的基本循环通过mysql查询

$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];

答案 3 :(得分:0)

如果您当前的ID是例如4,那么

下一步:

从foo中选择*,其中id =(从foo中选择min(id),其中id> 4)

<强>前

从foo中选择*,其中id =(从foo中选择max(id),其中id <4)