gpt4 book ai didi

SQL - 根据查询参数保留排序

转载 作者:行者123 更新时间:2023-12-04 17:40:10 25 4
gpt4 key购买 nike

我正在尝试执行 SELECTIN子句,我希望能够以与 IN 的列表中的元素相同的顺序返回结果。 .例如:

SELECT * FROM orders WHERE order_no IN ('B123', 'B483', 'B100', 'B932', ...);

我希望他们以同样的顺序回来。理想情况下,如果我能有这样的声明就好了:
SELECT * FROM orders WHERE order_no IN ('B123', 'B483', 'B100', 'B932', ...)
ORDER BY ('B123', 'B483', 'B100', 'B932', ...);

我看过使用 CASE 的查询示例或 DECODE 关键字来定义某种自定义排序。但是,在所有这些示例中,它们的排序是针对一组预先确定的选项。然而,我的排序完全取决于我的用户为他们的搜索条件输入的内容,因此可能有 2 个选项的列表或 100 个的列表可供排序...

有任何想法吗?一些我不知道的 Oracle 特性,或者一些使用方法 CASEDECODE对于动态集?

最佳答案

将值插入临时表并将您的选择加入其中。

然后,您可以对临时表列进行自然排序。

CREATE GLOBAL TEMPORARY TABLE sort_table (
value VARCHAR2(100),
sort_order NUMBER
) ON COMMIT DELETE ROWS;

INSERT INTO sort_table VALUES ('B123',1);
INSERT INTO sort_table VALUES ('B483',2);
... etc. ...

select * from mytable
inner join sort_table
on mytable.mycolumn = sort_table.value
order by sort_table.sort_order;

要清除临时表,只需 COMMIT .

关于SQL - 根据查询参数保留排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886457/

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