每当我查询此语句时,我的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 错误?但我没有看到它的缺陷?
这是我的执行计划:
我的currency.currency_story_body.body
是CLOB
而 story_id 是不主键。我该怎么办?
答案 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