MySQL の特定の制限を超えて順序付けられたレコードをフェッチする
このために、サブクエリを使用できます。まずテーブルを作成しましょう。
mysql> create table DemoTable618 (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,StudentFirstName varchar(100)
);
Query OK, 0 rows affected (1.45 sec)
insert コマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable618(StudentFirstName) values('David');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Chris');
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Robert');
Query OK, 1 row affected (0.54 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Sam');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Mike');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Carol');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable618(StudentFirstName) values('Bob');
Query OK, 1 row affected (3.66 sec)
mysql> insert into DemoTable618(StudentFirstName) values('John');
Query OK, 1 row affected (0.17 sec)
select ステートメントを使用してテーブルのすべてのレコードを表示します。
mysql> select *from DemoTable618;
これにより、次の出力が生成されます。
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1 | David |
| 2 | Chris |
| 3 | Robert |
| 4 | Sam |
| 5 | Mike |
| 6 | Carol |
| 7 | Bob |
| 8 | John |
+-----------+------------------+
8 rows in set (0.00 sec)
特定の制限を超えた後に順序付けられたレコードを取得するクエリは次のとおりです。
mysql> select *from (select StudentId,StudentFirstName from DemoTable618 where StudentId >= 5 order by StudentId limit 4) tbl order by tbl.StudentId desc;
これにより、次の出力が生成されます。
+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 8 | John |
| 7 | Bob |
| 6 | Carol |
| 5 | Mike |
+-----------+------------------+
4 rows in set (0.00 sec)