使用CLOB属性在Oracle中获取重复记录

时间:2012-10-22 14:05:41

标签: sql oracle oracle-sqldeveloper

每当我查询此语句时,我的Oracle SQL Developer IDE中都会出现重复记录:

SELECT currency.currency_story.story_id, 
       currency.currency_story.datetimestamp,
       currency.currency_story.headline, 
       currency.currency_story_body.body
FROM 
       currency.currency_story INNER JOIN 
       currency.currency_story_body ON 
       currency.currency_story.story_id = currency.currency_story_body.story_id
WHERE 
       currency.currency_story.datetimestamp > '18-Oct-12' AND  
       SUBSTR(currency.currency_story.story_id,10,4) > '1825' 
ORDER BY 
       currency.currency_story.datetimestamp ASC

因此在运行两个表的底部语句(currency_story& currency_story_body)之后,我获取了0行:

    select currency.currency_story_body.story_id
    from currency.currency_story_body 
    group by currency.currency_story_body.story_id
    having count(*) > 1

我同样也为currency_story表做了,我获取了0行。现在我知道每个表中没有重复的记录。所以我猜我的JOIN 错误?但我没有看到它的缺陷?

这是我的执行计划:

Execution Plan

我的currency.currency_story_body.bodyCLOB story_id 主键。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你在currency_story_body中有两条记录,它们都有相同的story_id会导致重复。

除了在联接中,你没有在任何地方使用currency_story_body,所以你可以尝试:

SELECT currency.currency_story.story_id, 
   currency.currency_story.datetimestamp,
   currency.currency_story.headline, 
   currency.currency_story.body
FROM 
   currency.currency_story
WHERE 
   currency.currency_story.datetimestamp > '18-Oct-12' AND  
   SUBSTR(currency.currency_story.story_id,10,4) > '1825' 
ORDER BY 
   currency.currency_story.datetimestamp ASC