gpt4 book ai didi

sql - Oracle SQL : How to use more than 1000 items inside an IN clause

转载 作者:行者123 更新时间:2023-12-02 03:54:22 25 4
gpt4 key购买 nike

我有一个 SQL 语句,我想获取 1200 ep_codes 的数据通过利用IN条款。当我包含超过 1000 ep_codes 时在 IN 子句中,Oracle 说我不允许这样做。为了克服这个问题,我尝试将 SQL 代码更改如下:

SELECT period, ...
FROM my_view
WHERE period = '200912'
...
AND ep_codes IN (...1000 ep_codes...)
OR ep_codes IN (...200 ep_codes...)

代码执行成功,但结果很奇怪(计算结果是针对所有周期获取的,而不仅仅是 200912,这不是我想要的)。使用 OR 这样做是否合适?之间IN或者我应该执行两个单独的代码,一个使用 1000 个 ep_code,另一个使用 200 个 ep_code? <小时/>

帕斯卡·马丁的解决方案非常有效。感谢所有提出宝贵建议的人。

最佳答案

在 Oracle 中处理此问题的推荐方法是创建一个临时表,将值写入其中,然后连接到该表。使用动态创建的 IN 子句意味着查询优化器会对每个查询进行“硬解析”。

create global temporary table LOOKUP
(
ID NUMBER
) on commit delete rows;

-- Do a batch insert from your application to populate this table
insert into lookup(id) values (?)

-- join to it
select foo from bar where code in (select id from lookup)

关于sql - Oracle SQL : How to use more than 1000 items inside an IN clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401066/

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