從MySQL 資料庫擷取資料時,通常需要以特定的方式對結果進行排序順序。 IN() 方法可用於根據預先定義的值清單檢索記錄,但是當您想要維護結果集中 IN() 子句中的值的順序時,就會出現挑戰。
問題:
假設您有一個包含有序 ID 號碼的 PHP 數組,並且想要使用 IN() 方法從 MySQL 表中取得對應的記錄。但是,您需要按照 IN() 子句中指定的順序傳回這些記錄。
解決方案:
可以解決此問題的強大函數挑戰是FIELD()。它主要被稱為字串函數,但它也可以有效地處理數字資料。透過使用FIELD(),您可以指定IN()子句中值的所需順序,MySQL將會相應地排列結果。
範例:
讓我們考慮以下帶有有序ID 號碼的PHP 陣列:
$ids = [4, 7, 3, 8, 9];
從名為articles的表中檢索對應的記錄,同時保持順序對於ID,您可以使用以下MySQL查詢:
SELECT * FROM articles ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
在此查詢中,FIELD() 函數用於根據第二個參數中的值的順序對結果進行排序。 IN() 子句中指定的順序是 [4, 7, 3, 8, 9],但我們希望傳回結果為:3, 2, 5, 7, 8, 1。因此,我們提供值以嚴格的順序作為 FIELD() 的第二個參數。這可確保文章按所需順序返回。
以上是如何使用 IN() 和 FIELD() 以自訂順序對 MySQL 查詢結果進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!