2017-03-20 10 views
0

私はMySQLに新しく、以下を実行しようとしています:MySQL:相関サブクエリを使用してあるテーブルの値を別のテーブルに挿入する方法

私は 'project_id'という新しい列と 'project'という既存の列を持つテーブル 'リンク'を持っています。

対応するid 'projects> id'をループするには、 'links> project'の値を使用する必要があります。この値を 'links'に挿入する必要があります。 'project_id'は外部キーになりますので、単に 'projects'で検索することができます。

私の擬似SQLコード(私はこれに新しいです)が好きに見えるE:

INSERT INTO links(project_id) 
select id 
from projects 
where project = links(project_id) 

おかげで(初心者くさいことを事前に謝罪)

+0

新しいproject_id列をすべて新しいレコードにするか、既存のレコードの列に記入しますか? –

+0

新しいリンク(project_id)の列は、既存の行のための新しいネットです。 project(id)の値は、リンク(project)の値に基づいてリンク(project_id)を埋める必要があります。 – dbonneville

+0

プロジェクトIDは既にプロジェクトのリンクテーブルにありますか?それ以外の場合は、プロジェクトの列の内容は何ですか? –

答えて

0

これを可能ですが、それぞれを仮定していますproject.project val ueはlinks.projectフィールドと完全に一致します。

UPDATE links AS l 
INNER JOIN (
    SELECT Id, project FROM project 
    ) AS a ON a.project = l.project 
SET l.project_id = p.Id 

これはlinks.projectの値と一致projectsテーブルから対応idlinksテーブル上project_idフィールドを更新します。

あなたはどちらの場合も、次の

INSERT INTO links (project_id) 
SELECT Id FROM project p 
INNER JOIN links l ON l.project = p.project 

を使用し、新しいレコードを作成したい場合は、INNER JOINはすでにlinksに同等のレコードを持っているprojectからのレコードだけがこのために使用されることを確認します操作。

+0

はい、projects.project列にlinks.projectの個別値が設定されています。 – dbonneville

+0

ありがとう、私はこれを勉強するつもりです! – dbonneville

+0

心配する必要はありません。 –

関連する問題