Cor*_*rey 5 mysql arrays postgresql
好的,有一些关于如何做到这一点的答案.但所有答案都假设查询选择了全部.如果您有明确的选择,则方法不再有效.
请参阅此处了解该方法:在Postgresql中模拟MySQL的ORDER BY FIELD()
基本上我有
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
Run Code Online (Sandbox Code Playgroud)
当然,这打破并说
"PGError:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中"
有没有办法按照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
Run Code Online (Sandbox Code Playgroud)