首頁 >資料庫 >mysql教程 >如何根據 IN 清單中值的順序對 PostgreSQL 查詢結果進行排序?

如何根據 IN 清單中值的順序對 PostgreSQL 查詢結果進行排序?

Barbara Streisand
Barbara Streisand原創
2025-01-19 11:06:11738瀏覽

How to Order PostgreSQL Query Results Based on the Order of Values in an IN List?

依照 IN 清單中數值的順序對 PostgreSQL 查詢結果進行排序

在 PostgreSQL 中,WHERE 子句中的 IN 結構可讓您指定一組與欄位相符的值。但是,根據 IN 列表中值的順序對結果行進行排序可能是一個挑戰。

幸運的是,PostgreSQL 8.2 引入了 VALUES() 結構,它使您可以建立一個包含特定值和順序的虛擬表。這使我們能夠根據 IN 列表中值的順序對結果進行排序。

要實現此目的,請使用以下語法:

<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>

在此範例中,我們使用 VALUES() 結構建立一個名為「x」的虛擬表。此虛擬表中的每一行都表示 IN 清單中的一個值及其對應的順序。然後,我們根據「id」欄位將「comments」表與「x」表連接起來,並按「ordering」欄位對結果進行排序。這確保了檢索到的行按 IN 清單中指定的順序排序:(1,3,2,4)。

以上是如何根據 IN 清單中值的順序對 PostgreSQL 查詢結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn