我希望从MySQL查询中返回第2,第3或第4条记录(基于ID升序的查询)
问题在于,我不会知道ID,只是它是查询中的第3行。
答案 0 :(得分:83)
SELECT * FROM table ORDER BY ID LIMIT n-1,1
它表示从记录n开始返回一条记录。
答案 1 :(得分:33)
接受的答案错误为1,偏移量为零索引:
来自doc:
使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1):
SELECT * FROM tbl LIMIT 5,10; #检索行6-15
所以正确的查询将是
SELECT * FROM table ORDER BY ID LIMIT n-1,1
答案 2 :(得分:6)
使用limit子句(在查询末尾添加'limit 3,1'仅选择第三行)。
以下是更多信息:http://php.about.com/od/mysqlcommands/g/Limit_sql.htm
答案 3 :(得分:6)
例如" LIMIT 10,5",它将跳过第一个数字指示的记录数,然后显示第二个数字指示的记录数。换句话说,它" LIMIT跳过,显示"。
SELECT * FROM tblTesting LIMIT 3, 6
将显示从第4条记录到第9条记录,总记录显示为6
如果您想要显示降序使用DESC
SELECT * FROM tblTesting ORDER BY column_name DESC LIMIT 3, 6
答案 4 :(得分:1)
MYSQL:偏移始终从零索引
开始OFFSET值表示不从OFFSET值开始
示例:记录1,2,3,4,5。
OFFSET 1表示返回第2个值,OFFSET 2表示返回第3个值,依此类推
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 1 OFFSET 1;
OR
SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 3 OFFSET 1;
它将从第二条记录中返回3条记录
答案 5 :(得分:0)
如果您使用PHP处理记录,那么您可以使用PHP手册中的表达式:
<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER BY Name";
if ($result = mysqli_query($link, $query)) {
/* seek to row no. 400 */
mysqli_data_seek($result, 399);
/* fetch row */
$row = mysqli_fetch_row($result);
printf ("City: %s Countrycode: %s\n", $row[0], $row[1]);
/* free result set*/
mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);
?>
阅读PHP手册:http://php.net/manual/en/mysqli-result.data-seek.php