gpt4 book ai didi

python - 让 PostgreSQL 尊重输入参数的顺序?

转载 作者:太空狗 更新时间:2023-10-30 01:04:02 26 4
gpt4 key购买 nike

这个问题有点历史 — Is there a way to make a query respect the order of the inputted parameters?

我是构建“专用”查询的新手,所以我假设如果我提供一个 IN 子句作为 SELECT 查询的一部分,它将返回结果以相同的顺序。不幸的是,情况并非如此。

SELECT * FROM artists WHERE id IN (8, 1, 2, 15, 14, 3, 13, 31, 16, 5, 4, 7, 32, 9, 37)
>>> [7, 32, 3, 8, 4, 2, 31, 9, 37, 13, 16, 1, 5, 15, 14]

(不包括我使用 Python 循环结果并将 ID 附加到列表的步骤。)

所以问题是,有没有一种方法可以让 Postgres 通过返回相同顺序的结果来遵守 IN 子句中给定参数的顺序?

最佳答案

除非您指定 ORDER BY 子句,否则查询结果将以不确定的顺序返回。

如果你真的想按照你要求的方式进行查询,那么你可以构造这样一个子句。下面是一个使用您的部分数据的示例。

create table artists (
id integer not null primary key,
name char(1) not null);

insert into artists
values
(8, 'a'),
(1, 'b'),
(2, 'c'),
(15, 'd'),
(14, 'e'),
(3, 'f'),
(13, 'g');

select *
from artists
where id in (8, 1, 2, 15, 14, 3, 13)
order by
id = 8 desc,
id = 1 desc,
id = 2 desc,
id = 15 desc,
id = 14 desc,
id = 3 desc,
id = 13 desc;

基于此和您的其他问题,我认为您的模型或您尝试执行此操作的方式有问题。也许你应该发布一个更通用的问题,关于如何做你想做的事情。

如果你有艺术家和排名表,你应该能够做这样的事情(或通过你的 ORM 进行类似的事情)。

select
a.*
from
artists a,
rankings r
where
a.id = r.artist_id
order by
r.score desc;

关于python - 让 PostgreSQL 尊重输入参数的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2255837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com