好的,这里有一些关于如何做到这一点的答案。但是所有的答案都假设查询是全选的。如果您有不同的选择,这些方法将不再有效。
请参阅此处了解该方法:Simulating MySQL's ORDER BY FIELD() in Postgresql
基本上我有
SELECT DISTINCT id
FROM items
WHERE id IN (5,2,9)
ORDER BY
CASE id
WHEN 5 THEN 1
WHEN 2 THEN 2
WHEN 9 THEN 3
END
当然,这个断言
"PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list"
有什么方法可以按照 IN 子句中值的顺序对 PostgreSQL 中的查询结果进行排序吗?
最佳答案
您可以将其包装到派生表中:
SELECT *
FROM (
SELECT DISTINCT id
FROM items
WHERE id IN (5,2,9)
) t
ORDER BY
CASE id
WHEN 5 THEN 1
WHEN 2 THEN 2
WHEN 9 THEN 3
END
关于sql - IN() 子句中的 PostgreSQL ORDER BY 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822651/