2016-11-13 20 views
1

私はテーブルに2553の小説情報(著者、年など)と1059人の著者(経歴情報あり)を含む別のテーブルを含んでいます。同じフィールドを持つ行に同じIDを割り当てるには

2番目の表の著者は、最初の表の小説の作家です。私は同じIDを2番目のテーブルのものから最初のテーブルの著者に割り当てたいと思います。

どうすればいいですか?私はすでに成功なしでこれをやってみた。

これ

は '小説' テーブルが

__ _____ ______ _________ 
|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  | 
|_________________________| 

これは、「著者のテーブルです(現時点では 列がAUTHOR_IDされていない)であるべき方法です

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

答えて

0

更新結合を実行できます。それは冗長になるので、あなたが小説テーブルに著者の列を削除したいはずです後にあり

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

(すべての著者が正しくauthorsテーブルで表現されて当然の前提とする)

+0

それは働きました!おかげで – valbuxvb

+0

助けてくれてうれしい – e4c5

0

相関クエリを使用できます。

UPDATE novels n 
set n.author_id = (SELECT a.id FROM authors a 
        WHERE n.author = a.name) 
関連する問題