使用多個值自訂 SQL 結果排序
使用包含大量欄位的 SQL 表(尤其是那些沒有索引的欄位)可能會使檢索和排序特定記錄成為一項複雜的任務。 假設您有一個帶有非索引 x_field
的表。 簡單地將 ORDER BY
與多個值一起使用並不能保證您需要的順序。
例如,這個查詢是有缺陷的:
<code class="language-sql">SELECT * FROM table WHERE id NOT IN (126) ORDER BY x_field 'f', 'p', 'i', 'a'</code>
語法不正確,不會產生預期的結果。解在於使用 CASE
語句明確定義順序:
<code class="language-sql">SELECT * FROM table WHERE x_field IN ('f', 'p', 'i', 'a') ORDER BY CASE x_field WHEN 'f' THEN 1 WHEN 'p' THEN 2 WHEN 'i' THEN 3 WHEN 'a' THEN 4 ELSE 5 -- Handles values outside the specified set END, id</code>
此精煉查詢將數字順序值分配給每個所需的 x_field
值。 帶有 x_field = 'f'
的記錄首先出現,然後是「p」、「i」和「a」。 任何其他 x_field
值將在末尾分組,按 id
排序。這種方法為管理 SQL 中的複雜排序場景提供了一種靈活可靠的方法。
以上是如何按預定義序列中的多個值對 SQL 結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!