从MySQL查询返回第n条记录

时间:2010-02-08 21:22:04

标签: mysql

我希望从MySQL查询中返回第2,第3或第4条记录(基于ID升序的查询)

问题在于,我不会知道ID,只是它是查询中的第3行。

6 个答案:

答案 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