我有一个包含两种语言的集合列的表,还有一个包含顺序的列。
是否可以迁移我的表并使用MySQL查询在新表中为每个集合项创建记录?
直接迁移记录适用于具有set列但没有语言组合的记录。但是,如果一个记录包含一组语言,那么我只剩下一个记录,其中的语言列为空。我最好在我的新桌子上放两张新唱片。
集合中每种语言一个。

INSERT INTO newtable (
    newtable.oldtable_id,
    newtable.language,
    newtable.order
)
SELECT oldtable.id, oldtable.languages, oldtable.order
FROM oldtable
WHERE oldtable.order IS NOT NULL;

我怀疑这是可能的,但是我还是想知道是否有人可以解决这个问题,因为我需要以某种方式迁移数据。

最佳答案

创建一个helper表,其中一个字段列出set列中可以使用的所有语言。表可以是迁移后丢弃的临时表。然后创建一个insert ... select ...语句,使用MySQL的find_in_set()函数将源表连接到helper表上:

INSERT INTO newtable (
newtable.oldtable_id,
newtable.language,
newtable.order
)
SELECT oldtable.id, helpertable.language, oldtable.order
FROM oldtable inner join helpertable ON find_in_set(helpertable.language, oldtable.languages)>0;

关于php - MySQL从具有设置字段的表中迁移数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38399277/

10-11 03:15