mysql中的重复行

时间:2013-07-27 00:27:20

标签: mysql

也许这似乎与人们通常喜欢做的相反,但我想在我的mysql表中复制行。

因此,例如,我有一个包含project_id的行,另一行包含file_name。每个项目都有很多与之关联的文件。我想将一个项目中存在的所有行复制到另一个项目中。我可以编写一些python脚本来做到这一点,但我怀疑有一种方法可以在mysql中完成。

有什么想法吗?感谢。

例如,如果我有一个看起来像这样的项目......

file_id, file_name, project_id
-------, ---------, ----------
      1, file1.png,          1
      2, file2.png,          1
      3, file3.png,          1

......最多约100行。

我应该输入什么来获得一个看起来像这样的项目......

file_id, file_name, project_id
-------, ---------, ----------
      1, file1.png,          1
      2, file2.png,          1
      3, file3.png,          1
      4, file1.png,          2
      5, file2.png,          2
      6, file3.png,          2

4 个答案:

答案 0 :(得分:2)

在MySQL中,您可以将insert语句与select语句组合在一起,以便insert语句在新行中插入的值是select语句选择的值。有关详细信息,请参阅INSERT..SELECT

答案 1 :(得分:2)

听起来你需要的是从SELECT中插入。这样做的基本思路可以在下面的链接中找到。

mysql -> insert into tbl (select from another table) and some default values

附注:如果您完全复制行,那么您可能会遇到数据库密钥问题。如果不这样做,那么您的数据库存在设计问题。

答案 2 :(得分:1)

试试这个:

INSERT INTO table_name (file_name, project_id)
SELECT file_name, project_id + 1 FROM table_name;

这将选择当前名为table_name的表中的所有内容,并使用递增的project_id将记录重新插入table_name。它假定file_id字段是自动递增的。

答案 3 :(得分:1)

我认为可以通过这种方式解决,如果您有一个主表,其中包含整个项目ID列表,我的示例中为project_table,并假设file_id中的file_table设置为auto_increment

INSERT INTO file_table ( file_name, project_id)
VALUES (SELECT file_name, project_table.project_id
        FROM project_table
        INNER JOIN file_table ON project_id = 1
        WHERE project_table.id != 1)
相关问题