如何为具有相同字段

时间:2016-11-13 12:07:40

标签: mysql

我有一个 MySQL 表,包含2553个小说信息(如作者,年份等),另一个表包含1059个作者(带有传记信息)。

现在,第二个表中的作者是第一个表中小说的作者。我想从第二个表中为第一个表中的作者分配相同的id。

我该怎么办?我已经尝试过这样做但没有成功。

  

这就是'小说'表应该如何(目前还没有author_id   列)

 __ _____ ______ _________
|id|title|author|author_id|
|0 |xyz  |John  |0        |
|1 |xyz2 |John  |0        |
|2 |abc  |Rob   |1        |
|3 |qwer |Jeff  |2        |
|4 |zxcv |Jeff  |2        |
|_________________________|
  

这是'作者'表

 __ ____ _____ 
|id|name|birth|
|0 |John|1956 |
|1 |Rob |1898 |
|2 |Jeff|1932 |
|_____________|

2 个答案:

答案 0 :(得分:0)

您可以使用相关查询:

UPDATE novels n
set n.author_id = (SELECT a.id FROM authors a
                   WHERE n.author = a.name)

答案 1 :(得分:0)

您可以进行更新加入。

UPDATE novels INNER JOIN authors 
SET novels.author_id=authors.id where novels.author=authors.name

之后您应该删除小说表中的作者列,因为它变得多余(当然假设所有作者都在authors表中正确表示)