在MySQL「IN」查詢中保留序列
在MySQL 中,「IN」運算子選擇與所提供清單中的任何值匹配的記錄。預設情況下,結果會按照資料庫排序演算法定義的順序返回,這可能不會總是與查詢中指定的順序對齊。
讓我們考慮以下範例:
SELECT * FROM foo f WHERE f.id IN (2, 3, 1);
此查詢旨在擷取 ID 為 2、3 和 1 的記錄。但是,結果通常會依照 ID 排序來升序:
+----+--------+ | id | name | +----+--------+ | 1 | first | | 2 | second | | 3 | third | +----+--------+
為了保持查詢中指定的順序,我們需要明確地對結果進行排序。 ORDER BY FIELD() 函數可以實現此目的。
SELECT * FROM foo f WHERE f.id IN (2, 3, 1) ORDER BY FIELD(f.id, 2, 3, 1);
FIELD() 函數將一個值作為第一個參數,將值列表作為其餘參數。它傳回值在清單中的位置。例如,FIELD(2, 2, 3, 1) 傳回 1,因為 2 是清單中的第一個值。
按FIELD(f.id, 2, 3, 1) 對結果進行排序,我們指示MySQL 首先按第一個值(2) 對記錄進行排序,然後按第二個值(3 ),最後按第三個值(1) 對記錄進行排序。此順序可確保結果會依照查詢中出現的順序傳回。
+----+--------+ | id | name | +----+--------+ | 2 | second | | 3 | third | | 1 | first | +----+--------+
以上是如何在 MySQL 'IN' 查詢中保留值的順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!