Oracle SQL IN子句对Subselect抛出错误
所以我的问题是: 我得到了这个SQL语句Oracle SQL IN子句对Subselect抛出错误,sql,oracle,greatest-n-per-group,in-clause,ora-00600,Sql,Oracle,Greatest N Per Group,In Clause,Ora 00600,所以我的问题是: 我得到了这个SQL语句 SELECT a.ID,a.CONTENTOF FROM MLMDATA.PV_STORAGE a WHERE 1=1 AND ID IN (113312,114583,114581,113472,114585,114580,113314) AND a.SEQ = (SELECT MAX(b.SEQ) FROM MLMDATA.PV_STORAGE b where a.ID = b.ID) 但我现在的问题是,我得到了一个错误: ORA-0060
SELECT a.ID,a.CONTENTOF
FROM MLMDATA.PV_STORAGE a
WHERE 1=1
AND ID IN (113312,114583,114581,113472,114585,114580,113314)
AND a.SEQ = (SELECT MAX(b.SEQ) FROM MLMDATA.PV_STORAGE b where a.ID = b.ID)
但我现在的问题是,我得到了一个错误:
ORA-00600: Internal Error Code, Arguments: [qernsRowP], [1], [], [], [], [], [], [], [], [], [], []
我似乎找不到一种方法来选择这些ID,其中只选择了最高的序列。。。。
我已经创建了一个视图,只显示最高的SEQ,但这不起作用。。。
我有点沮丧,因为据我所知,SQL以前工作过,但突然不工作了
有人知道问题可能是什么吗?请尝试以下查询:
SELECT a.ID,a.CONTENTOF FROM MLMDATA.PV_STORAGE a
INNER JOIN
(SELECT ID, CONTENTOF, MAX(SEQ) AS SEQ FROM MLMDATA.PV_STORAGE
where ID IN (113312,114583,114581,113472,114585,114580,113314)
GROUP BY ID, CONTENTOF) b
ON a.id = b.id AND a.SEQ = b.SEQ
请尝试此查询:
SELECT a.ID,a.CONTENTOF FROM MLMDATA.PV_STORAGE a
INNER JOIN
(SELECT ID, CONTENTOF, MAX(SEQ) AS SEQ FROM MLMDATA.PV_STORAGE
where ID IN (113312,114583,114581,113472,114585,114580,113314)
GROUP BY ID, CONTENTOF) b
ON a.id = b.id AND a.SEQ = b.SEQ
尝试一个窗口功能:
select id, contentof
from (
select id, contentof,
row_number() over (partition by id order by seq desc) as rn
FROM MLMDATA.PV_STORAGE a
where id IN (113312,114583,114581,113472,114585,114580,113314)
)
where rn = 1;
尝试一个窗口功能:
select id, contentof
from (
select id, contentof,
row_number() over (partition by id order by seq desc) as rn
FROM MLMDATA.PV_STORAGE a
where id IN (113312,114583,114581,113472,114585,114580,113314)
)
where rn = 1;
这只是我查询的一个简短版本。。。我试过了,得到的错误信息与以前相同:-(@Sunrunner-我忘了添加group by子句,您能检查更新的查询吗?@Md.SumanKabir您是否尝试了您发布的查询。我会说您尝试了这些内容,然后发布。添加group by将如何解决此问题。@XING他的查询对我来说非常有用!非常感谢您,我将永远不会使用内部连接代替两个where子句。@Sunrunner我的评论是关于他以前版本的答案。如果最新版本有效,那么代替说谢谢,您可以接受并将此答案标记为accpted。阅读本文这只是我查询的一个简短版本…我尝试了它,得到了与以前相同的错误消息:-(@Sunrunner-我忘了添加group by子句,您能检查更新的查询吗?@Md.SumanKabir您是否尝试了您发布的查询。我会说您尝试了这些内容,然后发布。添加group by将如何解决此问题。@XING他的查询对我来说非常有用!非常感谢您,我将永远不会使用内部连接代替两个where子句。@Sunrunner我的评论是关于他以前版本的答案。如果最新版本有效,那么在说“谢谢”时,您可以接受并将此答案标记为“已接受”。阅读此文,您可以提供一些示例数据和预期输出吗?您似乎有一些实际问题。请尝试用h仅提交一个ID?例如:和ID=113312@RenatoAfonso如果括号中只有一个ID,例如“和(113312)中的ID”,我可以毫无问题地使用上述SQL如果在in子句中只添加了另一个值,则会出现错误?您可能需要向DBA检查是否有损坏的数据文件。@RenatoAfonso是的,如果我只在in子句中添加了另一个值,则语句会出现故障。您能提供一些示例数据和预期的输出吗?看起来您确实有问题。可以吗请尝试将IN子句替换为仅归档一个ID?例如:和ID=113312@RenatoAfonso如果括号中只有一个ID,例如“和(113312)中的ID”,我可以毫无问题地使用上述SQL如果在in子句中只添加另一个值,则会出现错误?如果数据文件已损坏,则可能需要与DBA联系。@RenatoAfonso是的,如果我只在in子句中添加另一个值,则该语句将崩溃。