使用SQL IN()子句保持排序
在對結果進行排序時,使結果與IN()子句中指定的值的順序保持一致可能具有挑戰性。可以使用子查詢或臨時表來解決此問題,但是否有更有效的解決方案?
在MySQL中,FIELD()函數提供了一個可行的選擇。透過利用FIELD()函數,您可以根據IN()子句中值的順序直接操作排序。
<code class="language-sql">SELECT name, description, ... FROM ... WHERE id IN([ids, 无序]) ORDER BY FIELD(id, [ids, 有序])</code>
FIELD()函數決定作為第一個參數傳遞的值在提供的清單中的索引。傳回的索引表示該值在清單中的順序。
例如:
<code class="language-sql">FIELD('a', 'a', 'b', 'c') -- 返回 1 FIELD('a', 'c', 'b', 'a') -- 返回 3</code>
透過使用FIELD()函數並保持IN()子句和FIELD()函數中值的對應順序,您可以有效地使結果的順序與所需的順序一致。
以上是使用 SQL 的 IN() 子句時如何保留順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!