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')