使用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中文网其他相关文章!