ORDER BYを使用した結果のソート
表の主キーではないフィールドを使用してSELECT文の結果をソートするには、まず選択した列の索引を作成する必要があります。たとえば、次の表で、タイムスタンプに基づく問合せを実行し、タイムスタンプの降順で結果をソートするには、次のように索引を作成します。
sql-> SELECT id, firstname, lastname, lastLogin FROM Persons;
+----+-----------+----------+--------------------------+
| id | firstname | lastname | lastLogin |
+----+-----------+----------+--------------------------+
| 3 | John | Morgan | 2016-11-29T08:21:35.4971 |
| 4 | Peter | Smith | 2016-10-19T09:18:05.5555 |
| 2 | John | Anderson | 2016-11-28T13:01:11.2088 |
| 5 | Dana | Scully | 2016-11-08T09:16:46.3929 |
| 1 | David | Morrison | 2016-10-29T18:43:59.8319 |
+----+-----------+----------+--------------------------+
5 rows returned
sql-> CREATE INDEX tsidx1 on Persons (lastLogin);
Statement completed successfully
sql-> SELECT id, firstname, lastname, lastLogin
FROM Persons ORDER BY lastLogin DESC;
+----+-----------+----------+--------------------------+
| id | firstname | lastname | lastLogin |
+----+-----------+----------+--------------------------+
| 3 | John | Morgan | 2016-11-29T08:21:35.4971 |
| 2 | John | Anderson | 2016-11-28T13:01:11.2088 |
| 5 | Dana | Scully | 2016-11-08T09:16:46.3929 |
| 1 | David | Morrison | 2016-10-29T18:43:59.8319 |
| 4 | Peter | Smith | 2016-10-19T09:18:05.5555 |
+----+-----------+----------+--------------------------+
5 rows returned
SQL for Oracle NoSQL Databaseでは、ネストされたレコードの値によって問合せ結果をソートすることもできます。そのためには、ネストされた1つ以上のフィールドの索引を作成します。たとえば、Persons表からaddress.stateの索引を作成してから、stateで順序付けできます。
sql-> CREATE INDEX indx1 on Persons (address.state);
Statement completed successfully
sql-> SELECT id, $p.address.state FROM
Persons $p ORDER BY $p.address.state;
+----+-------+
| id | state |
+----+-------+
| 3 | FL |
| 4 | MA |
| 5 | NJ |
| 1 | TN |
| 2 | WI |
+----+-------+
5 rows returned
索引についてさらに学習するには、索引の操作を参照してください。