我有两张桌子,一张是书,另一张是作者。
书籍表 -
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`;
但它不起作用。谁能告诉我这里做错了什么?
感谢。
答案 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)