1

LIMIT を使用してページングしたいレコードのリストがありますが、LIMIT なしで返される最初のレコードは残りのレコードのルート識別子でもあり、ページごとに保持する必要があります。これは可能ですか?(余分なSQLステートメントを実行したくないだけです)

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

LIMIT 3、2 が返されるはずです...

id  |  index  |  title
1   |  0      |  index of titles
4   |  1      |  title3
5   |  1      |  title4
4

1 に答える 1

3
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) がある場合、最初のクエリのコストはほとんどかかりません。

于 2009-08-04T10:07:46.910 に答える