INSERT查询完整行期望id

时间:2014-06-25 07:11:15

标签: mysql sql

我试图在表格中插入一个完整的行。但问题是,我使用相同的ID。是否有一种简单的方法可以插入一个完整的行,期望一个值(ID)?

INSERT INTO new_table SELECT * FROM old_table WHERE q_value = 12345

我不会插入每一个值,因为有很多列。

感谢您的帮助, Yab86

3 个答案:

答案 0 :(得分:1)

可能是这样的东西

你可以不用获取column2

Insert Into new_table (Column1,Column3,Column4 ...)
Select Column1,Column3,Column4 ... From old_table 
WHERE q_value = 12345

答案 1 :(得分:1)

如果new_table中的第一列是你的auto_increment主要id,你可以使用它,但是你不能使用星号,并且必须列出除第一列之外的所有列(0将为你的auto_increment做技巧,这意味着它将插入autoindex的递增值):

INSERT INTO new_table
SELECT 0, column2, column3, ...
FROM old_table WHERE q_value = 12345

答案 2 :(得分:1)

如果ID是唯一键的一部分,唯一(好的)方法是写出所有其他列,例如

insert into new_table 
values (col1, col2, col3)
select col1, col2, col3
  from old_table
 where q_value = 12345;

如果ID不是唯一键的一部分,可能有一些方法可以在两个查询中执行(更容易编写但可能不会更好)

insert into new_table 
select *
  from old_table
 where q_value = 12345;

update new_table
   set ID = null
 where q_value = 12345;