確保 MySQL 的有序結果 IN()
子句
使用 IN()
子句檢索資料同時保留特定順序可能會很棘手。 當 IN()
子句的資料來源本質上不是有序的時,就會出現挑戰,從而導致不可預測的結果排序。 雖然建立具有自動遞增 ID 的臨時表提供了一種解決方案,但它增加了複雜性。
更簡單、更有效率的方法是使用 MySQL 的 FIELD()
函式。 FIELD()
在提供的清單中搜尋值並傳回其位置(索引)。 透過將 FIELD()
合併到 ORDER BY
子句中,我們可以根據 IN()
子句的值來決定輸出順序。
解決方案如下:
<code class="language-sql">SELECT name, description, ... FROM ... WHERE id IN ([ids, any order]) ORDER BY FIELD(id, [ids in desired order])</code>
這確保結果按照 FIELD()
函數的第二個參數中指定的精確順序返回,而不管 IN()
子句的原始順序如何。 FIELD()
有效地將 IN()
值對應到其索引,並使用這些索引進行排序。
此方法既簡潔又執行良好,為在 MySQL 中使用 IN()
子句時提供可靠的方法來控制結果順序。
以上是如何使用 IN() 子句保證 MySQL 查詢的有序結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!