我需要在表中创建许多记录的相同副本。该表在freshly-copied记录中有一个PK ID,当然,该ID将有所不同。

例如,假设我有一个scrum_card表,其中包含以下non-unique列:名称,说明,board_id

我有一个记录ID的动态数组,我想复制它们:[34,56,32,3445,...]

我该如何告诉MYSQL从所有这些记录中获取数据,并使这些记录相同的batch-insert?

在"human"语法中,它看起来像这样:"Select all columns(besides id) from scrum_card where the id's are [array of id's], then duplicate each found record"。

分析解答

您可以将SELECT结果集用作源,而不是使用带有VALUES(...)的一组文字行元组来使用INSERT。

INSERT INTO new_table (id, col1, col2, col3...)
SELECT NULL, col1, col2, col3...
FROM old_table
WHERE id IN (34,56,32,3445,...)

使用NULL代替SELECT中的id列将为每一行返回NULL,这将导致new_table生成新的id值。

但是,SQL除了输入列名之外,没有其他方法可以像"all columns except id,"那样使用通配符。