」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在不使用 ORDER BY 的情況下以預定義順序擷取 SQL 查詢結果?

如何在不使用 ORDER BY 的情況下以預定義順序擷取 SQL 查詢結果?

發佈於2024-11-20
瀏覽:820

How to Retrieve SQL Query Results in a Predefined Order Without Using ORDER BY?

以預定義順序傳回查詢結果

在SQL 中,除非使用ORDER 指定,否則通常很難以特定順序擷取查詢結果BY條款。然而,在某些情況下,ORDER BY 子句可能不適用,例如當嘗試僅根據特定欄位的值以預定順序檢索資料時。

最近的討論提出了一種情況,其中希望選擇 ID(7、2、5、9 和 8)並按照確切的順序檢索它們,而不依賴任何其他條件。以下查詢皆以不可預測的順序傳回結果:

SELECT id FROM table WHERE id in (7,2,5,9,8);
SELECT id FROM table WHERE id in (8,2,5,9,7);

透過一篇部落格文章發現了一個新穎的解決方案,它優雅地解決了這個問題:

SELECT id FROM table WHERE id in (7,2,5,9,8) 
ORDER BY FIND_IN_SET(id,"7,2,5,9,8");

FIND_IN_SET 函數用於傳回給定集合中指定值的位置。例如,id 7 的位置為 1,id 2 的位置為 2,依此類推。

將 ORDER BY 子句與 FIND_IN_SET 一起應用時,ORDER BY 語句了解位置並有效地對結果進行排序基於指定的值。此解決方案利用 MySQL 中的內部機制來實現所需的預定順序。

值得注意的是,當無法使用 ORDER BY 子句來指定所需的順序時,此技術可能是有價值的替代方案。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3