ORDER BY (NoSQL 查詢)
適用於:NoSQL
選擇性的 ORDER BY
子句會指定查詢所傳回的結果排列順序。
語法
ORDER BY <sort_specification>
<sort_specification> ::= <sort_expression> [, <sort_expression>]
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]
引數
描述 | |
---|---|
<sort_specification> |
指定要排列查詢結果集的屬性或運算式。 排序資料行可指定為名稱或屬性別名。 您可指定多個屬性。 屬性名稱須為唯一名稱。 ORDER BY 子句中的排序屬性序列會定義排序的結果集組織。 也就是說,結果集是依第一個屬性排序,而該排序清單會依次要屬性進行排序,以此類推。 ORDER BY 子句中參考的屬性名稱必須對應至選取清單中的屬性,或對應至 FROM 子句所指定集合內明確定義的屬性。 |
<sort_expression> |
指定用於排序查詢結果集的一或多個屬性或運算式。 |
<scalar_expression> |
表示要計算之值的運算式。 |
ASC 或 DESC |
指定指定之資料行的值應該以遞增或遞減順序排序。 ASC 從最低值到最高值進行排序。 DESC 從最高值到最低值進行排序。 如果未指定此自變數, ASC 則 (遞增) 是預設排序順序。 null 值會被視為最低的可能值。 |
注意
如需純量表達式的詳細資訊,請參閱 純量表達式
範例
針對本節中的範例,會使用這個參考集的專案。 每個專案都包含 name
具有 first
和 last
子屬性的屬性。
[
{
"name": {
"first": "Casey",
"last": "Jensen"
},
"team": "Human resources"
},
{
"name": {
"first": "Amari",
"last": "Rivera"
},
"team": "Human resources"
},
{
"name": {
"first": "Kayla",
"last": "Lewis"
},
"team": "Human resources"
}
]
在第一個範例中 ORDER BY
,子句是用來依預設排序順序、遞增排序字段。
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last
[
{
"firstName": "Casey",
"lastName": "Jensen"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Amari",
"lastName": "Rivera"
}
]
在下一個範例中,會明確指定排序順序來遞減。
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC
[
{
"firstName": "Amari",
"lastName": "Rivera"
},
{
"firstName": "Kayla",
"lastName": "Lewis"
},
{
"firstName": "Casey",
"lastName": "Jensen"
}
]
在此最後一個範例中,專案會使用兩個字段來排序,使用明確指定的順序來依特定順序排序。 使用兩個或多個字段排序的查詢需要 複合索引。
SELECT VALUE {
firstName: e.name.first,
lastName: e.name.last
}
FROM
employees e
ORDER BY
e.name.last DESC,
e.name.first ASC
備註
- 會傳
ORDER BY
回所有項目的查詢,包括未定義 ORDER BY 子句中 屬性的專案。 一般而言,您無法控制不同undefined
類型出現在結果中的順序。 若要控制未定義值的排序順序,請指派任意值的任何undefined
屬性,以確保它們在定義值之前或之後排序。 - 子
ORDER BY
句要求索引編製原則包含排序欄位的索引。 查詢運行時間支援根據屬性名稱或 計算屬性進行排序。 運行時間也支援多個ORDER BY
屬性。 若要執行具有多個ORDER BY
屬性的查詢,請在排序的欄位上定義 複合索引 。 - 如果排序的屬性可能
undefined
適用於某些專案,而且您想要在查詢中ORDER BY
擷取它們,則必須在索引中明確包含此路徑。 默認索引編製原則不允許擷取排序屬性為undefined
的專案。