programing

MySQL 쿼리에서 n번째 레코드 반환

javaba 2022. 11. 25. 21:02
반응형

MySQL 쿼리에서 n번째 레코드 반환

MySQL 쿼리에서 두 번째, 세 번째 또는 네 번째 레코드를 반환하려고 합니다(ID 오름차순 쿼리 기준).

문제는 ID는 알 수 없지만 쿼리의 세 번째 줄이라는 것입니다.

SELECT * FROM table ORDER BY ID LIMIT n-1,1

레코드 n부터 1개의 레코드를 반환한다고 되어 있습니다.

오프셋이 제로 인덱스이기 때문에 승인된 답변은 편집 전에1개 틀렸습니다

문서에서:

두 개의 인수를 사용하는 경우 첫 번째 인수는 반환할 첫 번째 행의 오프셋을 지정하고 두 번째 인수는 반환할 최대 행 수를 지정합니다.첫 번째 행의 오프셋은 0(1이 아님)입니다.

선택 * FROM TBL LIMIT 5,10; # 6 ~15행 검색

따라서 올바른 질문은

SELECT * FROM table ORDER BY ID LIMIT n-1,1

예를 들어 "LIMIT 10, 5"는 첫 번째 번호로 표시된 레코드 수를 건너뛰고 두 번째 번호로 표시된 레코드 수를 표시합니다.즉, "LIMIT skip, show"입니다.

SELECT * FROM tblTesting LIMIT 3, 6

4번째 레코드부터 9번째 레코드까지 표시되며, 총 레코드는 6개 표시됩니다.

내림차순을 표시하려면 를 사용합니다.DESC

SELECT * FROM tblTesting ORDER BY column_name DESC LIMIT 3, 6

limit 구를 사용합니다(세 번째 행만 선택하려면 쿼리 끝에 'limit 3, 1'을 추가합니다).

상세한 것에 대하여는, http://php.about.com/od/mysqlcommands/g/Limit_sql.htm 를 참조해 주세요.

MYSQL: 오프셋은 항상 0 인덱스부터 시작합니다.

OFFSET 값이 OFFSET 값에서 시작되지 않음을 의미합니다.

예: 레코드 1, 2, 3, 4, 5.

OFFSET 1은 OFFSET 2가 세 번째 값을 반환하는 등 두 번째 값을 반환함을 의미합니다.

SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 1 OFFSET 1;

또는

SELECT table_column FROM Table GROUP BY table_column DESC LIMIT 3 OFFSET 1;

두 번째 레코드에서 3개의 레코드가 반환됩니다.

레코드를 처리하기 위해 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 메뉴얼을 참조해 주세요.

언급URL : https://stackoverflow.com/questions/2224951/return-the-nth-record-from-mysql-query

반응형