0

MySQL で実行する必要がある更新クエリがあり、問題が発生しています。SO の解決策を調査す​​るために最後の 1 時間を費やしましたが、実際に機能するものを見つけることができませんでした。次のことを行う必要があります。

UPDATE TABLE1 SET ID = (SELECT TABLE2.ID FROM TABLE2, TABLE1 
WHERE TABLE1.NAME=TABLE2.NAME) WHERE TABLE1.ID IS NULL

エラーが発生していError Code: 1242. Subquery returns more than 1 rowます。正常に実行されるようにクエリを変更するにはどうすればよいですか?

基本的に、別のテーブルから、条件に基づいて 1 つの列のすべての値の空白を埋める必要があります。この問題について教えてください。ありがとうございました!

4

3 に答える 3

1
UPDATE TABLE1, TABLE2 
  SET TABLE1.ID = TABLE2.ID
  WHERE TABLE1.ID IS NULL
  AND TABLE1.NAME = TABLE2.NAME

NAMEすべての名前に対して TABLE1 と TABLE2 で一意であると仮定すると、おそらくあなたが望むことをするはずです。

于 2013-03-23T04:37:33.683 に答える
0

SELECT TABLE2.ID FROM TABLE2, TABLE1 WHERE TABLE1.NAME=TABLE2.NAME

複数の行を返すこのクエリ

Your Query:UPDATE TABLE1 SET ID = ( // here setting one value



TABLE1.NAME=TABLE2.NAME //  more than one matched records are available

ここではidを設定していますが、サブクエリが複数の行を返す場合、1つの値を設定することはできません

于 2013-03-23T01:05:44.003 に答える