문제

제한을 사용하여 페이지를 사용하려는 레코드 목록이 있지만 제한없이 반환되는 첫 번째 레코드는 나머지 레코드의 루트 식별자이며 모든 페이지에 대해 보관해야합니다. 이게 가능해? (나는 추가 SQL 문을 실행하지 않는 것을 선호합니다)

id  |  index  |  title
1   |  0      |  index of titles
2   |  1      |  title1
3   |  1      |  title2
4   |  1      |  title3
5   |  1      |  title4

제한 3, 2는 반환해야합니다 ...

id  |  index  |  title
1   |  0      |  index of titles
4   |  1      |  title3
5   |  1      |  title4
도움이 되었습니까?

해결책

SELECT  *
FROM    (
        SELECT  *
        FROM    mytable
        WHERE   index = 0
        ORDER BY
                index, id
        LIMIT 1
        ) q
UNION ALL
        (
        SELECT  *
        FROM    mytable
        WHERE   index = 1
        ORDER BY
                index, id
        LIMIT 3, 2
        ) q2

복합 키가있는 경우 (index, id) (안에 MyISAM) 또는 단지 색인 켜짐 index (안에 InnoDB), 첫 번째 쿼리 비용은 거의 비용이 들지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top