gpt4 book ai didi

sql - 如何在 Oracle/SQL 中检索给定序列中的行?

转载 作者:行者123 更新时间:2023-12-02 05:29:53 26 4
gpt4 key购买 nike

我有一个带有主键 MY_PK 的表 MY_TABLE。然后,我有一个有序主键列表,例如 (17,13,35,2,9)。

现在我想检索具有这些主键的所有行,并按照给定键列表的相同方式保持行的顺序。

我最初做的是:

SELECT * FROM MY_TABLE WHERE MY_PK IN (:my_list)

但是返回行的顺序是随机的,不再对应于给定键的顺序。有没有办法做到这一点?我唯一想到的是制作许多 SELECT 语句并将它们与 UNION 连接起来,但我的主键列表可能很长并且包含数百甚至数千个键。我想到的替代方案是之后在应用程序中对行重新排序,但我更喜欢不需要这样做的解决方案。

最佳答案

首先,与工会一起做这件事不一定有帮助。无法保证结果集中行的顺序 ,除非您有 order by 子句。

这是一个解决方案,尽管它不够优雅:

with keys as (
select 1 as ordering, 17 as pk from dual union all
select 2 as ordering, 13 as pk from dual union all
select 3 as ordering, 35 as pk from dual union all
select 4 as ordering, 2 as pk from dual union all
select 5 as ordering, 9 as pk from dual
)
select mt.*
from My_Table mt join
keys
on mt.my_pk = keys.pk
order by keys.ordering

关于sql - 如何在 Oracle/SQL 中检索给定序列中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532399/

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