小编典典

按 IN 值列表排序

all

我在 PostgreSQL 8.3 中有一个简单的 SQL 查询,它获取了一堆注释。我为子句中的构造提供了一个 排序 的值列表:IN``WHERE

SELECT * FROM comments WHERE (comments.id IN (1,3,2,4));

这会以任意顺序返回评论,在我看来,这些评论恰好是1,2,3,4.

我希望生成的行像IN构造中的列表一样排序:(1,3,2,4)
如何做到这一点?


阅读 69

收藏
2022-06-21

共1个答案

小编典典

使用(在 PostgreSQL 8.2 中引入)VALUES (), () 可以很容易地做到这一点。

语法将是这样的:

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
2022-06-21