以預先定義順序傳回查詢結果
在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 子句來指定所需的順序時,此技術可能是有價值的替代方案。
以上是如何在不使用 ORDER BY 的情況下以預定義順序擷取 SQL 查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!