首頁  >  文章  >  資料庫  >  如何在不使用 ORDER BY 的情況下以預定義順序擷取 SQL 查詢結果?

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

DDD
DDD原創
2024-10-30 04:24:02236瀏覽

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 子句來指定所需的順序時,此技術可能是有價值的替代方案。

以上是如何在不使用 ORDER BY 的情況下以預定義順序擷取 SQL 查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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