使用 IN 子句控制 PostgreSQL 查詢中的行順序
PostgreSQL 的 IN
子句雖然過濾功能強大,但本質上並不能保證特定的行順序。 如果您需要檢索根據 IN
清單中的順序排序的行,使用 VALUES
構造(在 PostgreSQL 8.2 及更高版本中可用)的解決方法提供了一個解決方案。
此方法建立一個子查詢,將 IN
清單中的 ID 對應到自訂訂單。然後主查詢連接該子查詢以對結果進行排序。 方法如下:
<code class="language-sql">SELECT c.* FROM comments c JOIN ( VALUES (1,1), (3,2), (2,3), (4,4) ) AS x (id, ordering) ON c.id = x.id ORDER BY x.ordering;</code>
此查詢使用 x
建構臨時表 (VALUES
)。 x
中的每一行將 IN
清單中的 ID 與其所需的順序 (ordering
) 配對。 JOIN
操作根據 comments
列將此臨時表連結到 id
表。 最後,ORDER BY x.ordering
根據 VALUES
構造中定義的順序對結果進行排序。
此方法有效地允許您自訂涉及 IN
子句的查詢傳回的行順序,從而提供對資料呈現的精確控制。
以上是如何根據 IN 子句中值的順序對 PostgreSQL 結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!