web-dev-qa-db-ja.com

あるテーブルから別のテーブルに1つの列をコピーする

Whereを使用して、あるテーブルから別のテーブルに列をコピーする方法について混乱しています。 SQLクエリを作成しましたが、トランザクションのロック時間が経過したか、クエリが複数の行を返しました。
mysqlを使用
基本的に、
私が持っています:

Table 1:  Results
BuildID  platform_to_insert

Table 2:  build
BuildID correct_platform

update results set results.platform_to_insert 
     = (select correct_platform from  
       build where results.BuildID = build.BuildID)
26
JPro

サブクエリは必要ないと思います。

UPDATE results, build
SET    results.platform_to_insert = build.correct_platform
WHERE  results.BuildID = build.BuildID
70
Benoit Vidis

ここには2つのオプションがあります。

  1. BuildIDを主キーとして使用するようにテーブルを更新します(重複を避けるため)
  2. 1つの結果のみを返すようにサブクエリを更新する

    UPDATE results SET results.platform_to_insert = (
        SELECT correct_platform
        FROM build
        WHERE results.BuildID=build.BuildID LIMIT 1
    );
    
5
tmpvar