mysql – >插入到tbl(从另一个表中select)和一些默认值

正如标题所说,我试图插入到一个表中select从另一个表和一些默认值的值。

INSERT INTO def (catid, title, page, publish) (SELECT catid, title from abc),'page','yes') INSERT INTO def (catid, title, page, publish) VALUES ((SELECT catid, title from abc),'page','yes')) 

第一个查询给出一个mysql错误,第二个给出列数不匹配。

我需要做什么?

你只需要做:

 INSERT INTO def (catid, title, page, publish) SELECT catid, title, 'page','yes' from `abc` 

如果你想复制源表的一个子集,你可以这样做:

 INSERT INTO def (field_1, field_2, field3) SELECT other_field_1, other_field_2, other_field_3 from `abc` 

或者将源表中的所有字段复制到目标表中,则可以更简单地执行下列操作:

 INSERT INTO def SELECT * from `abc` 

如果你想插入所有的列然后

 insert into def select * from abc; 

这里def的列数应该等于abc。

如果你想插入的子集的话

 insert into def (col1,col2, col3 ) select scol1,scol2,scol3 from abc; 

如果你想插入一些hardcorded值然后

 insert into def (col1, col2,col3) select 'hardcoded value',scol2, scol3 from abc; 

使用MySQL,如果您要插入一个具有自动递增主键的表,并且您想使用NOW()等内置MySQL函数,那么您可以这样做:

 INSERT INTO course_payment SELECT NULL, order_id, payment_gateway, total_amt, charge_amt, refund_amt, NOW() FROM orders ORDER BY order_id DESC LIMIT 10; 
 INSERT INTO def (field_1, field_2, field3) VALUES ('$field_1', (SELECT id_user from user_table where name = 'jhon'), '$field3')