使用mysql将值从一个表插入另一个表

时间:2018-01-29 08:38:17

标签: mysql sql

我有两张桌子,一张是书,另一张是作者。

书籍表 -

id |    name    | auth_id | auth_name
1  |    Book1   |  1      | null
2  |    Book2   |  2      | null
3  |    Book3   |  3      | null

作者表

id | firstname | lastname 
1  |    John   |  Stark    
2  |    Jobs   |  Steve     
3  |    Amar   |  Shrama    

此处auth id指的是Authors表的主键。 现在我想从Authors表中填充book表的auth_name列。

我正在使用以下查询。

INSERT INTO `books` (auth_name)
SELECT CONCAT(`lastname`, ',', `firstname`)
FROM `Authors`
Left join `books` on `books`.`auth_id` = `Authors`.`id`;

但它不起作用。谁能告诉我这里做错了什么?

感谢。

2 个答案:

答案 0 :(得分:2)

您需要更新不要插入的数据。你可以实现如下:

UPDATE books
INNER JOIN books ON books.auth_id = authers.id
SET books.auth_name = CONCAT(lastname, ',', firstname) 

如果“作者”表具有书中的所有作者ID,则不需要连接,如果不是这样,则使用左连接。

答案 1 :(得分:0)

使用此查询

UPDATE books 
SET auth_name = (SELECT CONCAT(lastname, ',', firstname) FROM authors WHERE id = auth_id)