首页 > 数据库 > mysql教程 > 如何对 SQL 结果进行排序以匹配 IN 列表中值的顺序?

如何对 SQL 结果进行排序以匹配 IN 列表中值的顺序?

Susan Sarandon
发布: 2025-01-19 11:11:10
原创
382 人浏览过

How Can I Order SQL Results to Match the Order of Values in an IN List?

按照IN列表顺序排列结果

在SQL中,一个常见的情况是使用IN运算符根据指定的值集检索数据。在这种情况下,可能需要按照IN列表中的顺序排列结果。

在8.4之前的PostgreSQL版本中,实现此排序的一种方法是使用相关子查询。但是,对于8.2及更高版本,可以使用更有效的方法:

VALUES函数

PostgreSQL在8.2版本中引入了VALUES函数,该函数允许创建内存表。此函数可用于构建一个包含所需值顺序的临时表:

<code class="language-sql">select c.*
from comments c
join (
  values
    (1,1),
    (3,2),
    (2,3),
    (4,4)
) as x (id, ordering) on c.id = x.id
order by x.ordering</code>
登录后复制

在此查询中:

  • VALUES函数创建一个名为“x”的临时表,该表包含两列:“id”和“ordering”。
  • “id”列包含IN子句中指定的值。
  • “ordering”列为每个值分配一个数字顺序,确保结果的所需排列。
  • 临时表“x”根据公共“id”列与“comments”表连接。
  • 最后,结果按“ordering”列排序,生成所需的comments顺序。

以上是如何对 SQL 结果进行排序以匹配 IN 列表中值的顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板