首頁 >資料庫 >mysql教程 >如何對 SQL 結果進行排序以符合 IN 清單中值的順序?

如何對 SQL 結果進行排序以符合 IN 清單中值的順序?

Susan Sarandon
Susan Sarandon原創
2025-01-19 11:11:10384瀏覽

How Can I Order SQL Results to Match the Order of Values in an IN List?

依照IN列表順序排列結果

在SQL中,一個常見的情況是使用IN運算子根據指定的值集檢索資料。在這種情況下,可能需要按照IN清單中的順序排列結果。

在8.4之前的PostgreSQL版本中,實作此排序的一種方法是使用相關子查詢。但是,對於8.2及更高版本,可以使用更有效的方法:

VALUES函數

PostgreSQL在8.2版本中引入了VALUES函數,該函數允許建立記憶體表。此函數可用於建立一個包含所需值順序的臨時表:

<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」的暫存表,該表包含兩列:「id」和「ordering」。
  • 「id」欄包含IN子句中指定的值。
  • 「ordering」列為每個數值分配一個數字順序,確保結果的所需排列。
  • 臨時表“x”根據公共“id”列與“comments”表連接。
  • 最後,結果依「ordering」欄位排序,產生所需的comments順序。

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

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