我试图在表格中插入一个完整的行。但问题是,我使用相同的ID。是否有一种简单的方法可以插入一个完整的行,期望一个值(ID)?
INSERT INTO new_table SELECT * FROM old_table WHERE q_value = 12345
我不会插入每一个值,因为有很多列。
感谢您的帮助, Yab86
答案 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;