首頁 > 資料庫 > mysql教程 > 如何在 MySQL 'IN' 查詢中保留值的順序?

如何在 MySQL 'IN' 查詢中保留值的順序?

Mary-Kate Olsen
發布: 2024-12-26 08:39:13
原創
769 人瀏覽過

How to Preserve the Order of Values in a MySQL `IN` Query?

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板