Postgresql - 9.1 IN 参数更改了排序顺序

标签 postgresql orm

我有一些 ID,它们已经按排序顺序排列 (65826 ,78555,456666) 。我在选择查询中传递此输入以获取数据,但在输出中排序顺序将更改并返回结果为 (456666,65826,78555);

select sku_id from blc_sku where sku_id in(65826 ,78555,456666) 但输出返回为

sku_id

65286
78555
456666

但预期的结果,

sku_id

456666
65286
78555

请帮我解决这个...

最佳答案

t=> with v(a) as (values (2),(1),(3))
select * from v
t-> where a in (1,2,3)
t-> ;
 a
---
 2
 1
 3
(3 rows)

您看到的结果是符合数据的顺序,而不是您在 IN 中设置的顺序。尽管 Postgres 不保证这种行为(并且您无法预测数据的满足顺序 - 它取决于缓存和我不知道的其他事情)。如果你想要有序的结果集使用 ORDER 指令:

t=> with v(a) as (values (2),(1),(3))
select * from v
where a in (1,2,3)
order by a desc;
 a
---
 3
 2
 1
(3 rows)

如果您有一个预先排序的列表,您可以根据它加入初始数据,如下所示:

t=> with v(a) as (values (2),(1),(3))
, ordered (v,o) as (values(1,0), (2,1), (3,2))
select v.* from v
join ordered on v.a=ordered.v
order by o;
 a
---
 1
 2
 3
(3 rows)

关于Postgresql - 9.1 IN 参数更改了排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440561/

相关文章:

android - DBFlow(模型无法转换为模型)

node.js - 如何使用带有属性的包含与 Sequelize ?

postgresql - docker 。 Postgres。 pgAdmin4

postgresql - psql : error: FATAL: Peer authentication failed for user "blog" in PostgreSQL for Ubuntu 20. 04 LTS

java - GreenDao 和实体继承

python - 使用 Django ORM,遍历表记录,测试它们并在需要时删除记录

java - 如何在 hibernate/JPA 中禁用自动更新

mysql - 查找表格中的所有起始字母

java - 如何配置 HikariConfig 中提供的 TCP_KEEPALIVE 属性

sql - Postgres 正则表达式替换性能