我有一张类似这样的表
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的下一行。
答案 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。
通过这种方式,您可以在两个订单(ASC
和DESC
)中遍历结果,并同时获取下一个或上一个(>
或<
)行。< / 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)