在MySQL“IN”子句中按值順序對結果進行排序
在MySQL 中,使用“IN”從大表中選擇記錄子句通常會導致無序的結果。對於結果順序至關重要的場景,需要一種解決方法來實現所需的順序。
低效方法:臨時表
最初,建議是建立使用「IN」子句中的值建立臨時表並執行聯結操作。但是,這種方法對於大型資料集可能效率較低。
高效解決方案:FIELD() 函數
FIELD() 函數提供了一種高效的方法,而不是使用連接根據「IN」子句中的值對結果進行排序的替代方法。 FIELD() 函數採用兩個參數:
透過在ORDER BY 子句中使用FIELD() 函數,可以根據「IN」子句中的值的順序對結果進行排序:
<code class="sql">SELECT * FROM your_table WHERE id IN (5,2,6,8,12,1) ORDER BY FIELD(id,5,2,6,8,12,1);</code>
FIELD() 函數文檔
有關FIELD() 函數的更多信息,請參閱MySQL 文件:
[MySQL FIELD() 函數參考] (https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_field)
以上是如何使用 IN 子句按值順序對 MySQL 查詢結果進行排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!