1

每当我使用以下语句查询时,我的 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 是错误的?但我没有看到它的缺陷?

这是我的执行计划:

执行计划

Mycurrency.currency_story_body.body是 aCLOB并且story_id不是键。我应该在这里做什么?

4

1 回答 1

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
于 2012-10-22T14:16:22.510 回答