我在 PostgreSQL 8.3 中有一个简单的 SQL 查询,它获取了一堆注释。我为子句中的构造提供了一个 排序 的值列表:IN``WHERE
IN``WHERE
SELECT * FROM comments WHERE (comments.id IN (1,3,2,4));
这会以任意顺序返回评论,在我看来,这些评论恰好是1,2,3,4.
1,2,3,4
我希望生成的行像IN构造中的列表一样排序:(1,3,2,4)。 如何做到这一点?
IN
(1,3,2,4)
使用(在 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