我们有一个简单的接口来标记一个特定的问题。
(e.g. entry has 1..many tags and each tag entry has a foriegn key pointer back to the entry table)
1. What is the current production version of the jdk? (Tags: jdk6 jdk-6 jdk java)
2. In what version was java.util.spi package introduced? (Tags: jdk-6, jdk7, jdk5)
3. Which version of java is going to be released soon? (Tags: jdk-6, jdk7, jdk8)我们希望将所有名为"jdk-6“的标记合并到jdk6中。我们如何在一个正在接近生产但包含有用数据的系统中实现这一点。
在1JDK-6中需要删除,因为jdk6已经存在。在2,3中,jdk-6需要重命名为"jdk6“。
我需要什么样的脚本才能以有效的方式迁移这些数据。
编辑
create table entry (id, question, ...)
create table entry_tag (id, entry_id, tag)发布于 2010-10-18 16:04:45
我要做以下几点:
使用好的(UPDATE TagTable SET Tag = 'jdk6' WHERE tag = 'jdk-6')
DELETE FROM TagsList WHERE Tag = 'jdk-6').中删除jdk-6。
发布于 2010-10-18 15:55:02
首先,我将创建一个新表,其中包含包含'jdk-6‘或’jdk 6‘标记的条目ID列表。
然后,我将删除标签'jdk6‘和'jdk-6’的所有标记记录。
然后我将它们添加回使用在开始时创建的表中。
发布于 2010-10-18 16:16:19
/* Step 1 - Delete where both tags exist */
delete from et1
from entry_tag et1
inner join entry_tag et2
on et1.entry_id = et2.entry_id
and et2.tag = 'jdk6'
where et1.tag = 'jdk-6'
/* Step 2 - Update remaining tags */
update entry_tag
set tag = 'jdk6'
where tag = 'jdk-6'https://stackoverflow.com/questions/3960828
复制相似问题