吉两嘢 发表于 2023-9-14 12:05:17

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

我正在尝试使用它SELECTwithIN子句,并希望以与列表中的元素相同的顺序返回结果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关键字定义了自定义排序的查询示例。然而,在所有这些示例中,它们的顺序都是针对一组预定的选项。由于我的订单完全取决于用户输入的搜索条件,可能有两个选项或100个订购列表…
有什么想法吗?我不知道一些事情Oracle功能,某种使用方式CASE或DECODE动态集?
                                                               
    解决方案:                                                               
                                                                将值插入临时表中,然后将您选择的表添加到表中。
然后,您可以在临时列表上自然排序。
CREATE GLOBAL TEMPORARY TABLE sort_table (value       VARCHAR2(100), sort_orderNUMBER) ON COMMIT DELETE ROWS;INSERT INTO sort_table VALUES ('B123',1);INSERT INTO sort_table VALUES ('B483',2);... etc. ...select * from mytableinner join sort_tableon mytable.mycolumn = sort_table.valueorder by sort_table.sort_order;只需清除临时表COMMIT。
页: [1]
查看完整版本: SQL-根据查询参数保留排序