使用带有其他列的表中的SELECT *插入INTO

时间:2018-03-22 07:52:16

标签: mysql sql

如何使用select * from table将记录插入另一个表并添加其他数据?

  • table_a列:id,name
  • table_b列:ID,姓名,电子邮件,电话

我的查询:

INSERT INTO `table_b` 
    SELECT * 
    FROM `table_a` 
    WHERE `id` = '1' + additional data 

我找到了答案 查询:

INSERT INTO `table_b` 
SELECT a.*, 'email@email.com','1234' 
FROM table_a a 
WHERE `id`='2'

由于

2 个答案:

答案 0 :(得分:6)

您可以只在SELECT语句中添加常量,例如

INSERT INTO table_b (id, name, email, phone)
SELECT id, name, 'jon.skeet@google.com', '867-5309'
FROM table_a
WHERE id = 1;

请注意,我明确列出了来自table_btable_a的所有列。虽然并非绝对需要这样做,但它使您的代码更易于阅读,更易于维护,并最大限度地减少了以后出错的可能性。

答案 1 :(得分:0)

您可以在SELECT

中添加此数据
INSERT INTO table_b 
SELECT table_a.id, table_a.name,  email = 'myemail@example.com', phone = '123'
FROM table_a WHERE id='1'

当然,列必须匹配。

如果只有一些列(名称或只是实际存在)匹配,您可以在"插入table_b"之后指定要插入的列(注意订单!)声明