我遇到了问题。 我有一个包含这些列的表:
languageID languageItem
每一行只能有“2”或“3”作为languageID,而且languageItem总是不同,但只能使用相同的languageID。例如,我可以:
2 | header.title
2 | header.description
3 | header.description
3 | header.title
问题是现在,languageID为“3”的行少于languageID为“2”的行,我需要为每个languageID设置相同的languageItem。像:
2 | header.title
2 | header.description
2 | header.button
3 | header.title
3 | header.description
缺少“3”的header.button
我想选择languageID 2有更多的所有行,然后“复制”它们并使用languageID 3插入。
由于
编辑:这些行不仅包含这两列,还包含其他列。
答案 0 :(得分:1)
您只需插入不存在的值即可。查询如下所示:
insert into table(languageId, languageItem)
select 3, languageitem
from table t
where languageid = 2 and
not exists (select 1
from table t3
where t3.languageid = 3 and t3.languageitem = t.langaugeitem
);
答案 1 :(得分:0)
INSERT INTO LanguageItems(languageID, languageItem)
SELECT
3,
WantedValues.languageItem
FROM
LanguageItems WantedValues
LEFT JOIN LanguageItems ExistingValues ON
WantedValues.languageItem = ExistingValues.languageItem
AND WantedValues.languageID = 2
AND ExistingValues.languageID = 3
WHERE
WantedValues.languageID = 2
AND ExistingValues.languageID IS NULL
答案 2 :(得分:0)
您可以在此处使用INSERT IGNORE:
insert ignore into mytable(languageId, languageItem)
select 3 as languageId, languageitem from mytable where languageid = 2;
(前提是在languageId + languageItem上有一个唯一索引。)