如何使用SELECT * FROM表插入数据并添加额外列至另一表?
如何从table_a向table_b插入记录并添加额外固定数据?
嘿,这个场景我之前处理过,刚好能帮到你!
你现在的需求是把table_a(只有id、name两列)的指定记录插入到table_b(包含id、name、email、phone四列),同时给新增的email和phone字段补上固定值对吧?
你最开始的思路方向是对的,但语法上有点小问题——不能直接用+来拼接额外数据,而是要把这些固定值直接加到SELECT的字段列表里。
正确的实现语句
INSERT INTO `table_b` SELECT a.*, 'email@email.com', '1234' FROM table_a a WHERE `id`='2';
简单解释下这段代码:
INSERT INTO \table_b``:指定要插入数据的目标表SELECT a.*:a是table_a的别名,a.*会一次性选中table_a的所有列(也就是id和name),刚好对应table_b的前两个字段- 后续的
'email@email.com'和'1234':就是你要补充的固定数据,对应table_b的email和phone字段 WHERE \id`='2':筛选要插入的特定记录,只插入id`为2的条目
额外的安全提示
如果担心以后table_b的列顺序被修改导致插入出错,更稳妥的写法是显式指定目标表的列名,这样不管列顺序怎么变,只要列名对应上就没问题:
INSERT INTO `table_b` (id, name, email, phone) SELECT a.id, a.name, 'email@email.com', '1234' FROM table_a a WHERE `id`='2';
内容的提问来源于stack exchange,提问作者Unyil
相关产品推荐
相关产品推荐

