1

私は次のコードを持っていますがtable_1、条件が真でない場合(つまり、table_1.data_1にまったく存在しない場合)でも、のすべての行を更新しますtable_2.data_1。次の更新ステートメントを調整して、の値table_1と一致する値のみtable_2が更新されるようにするにはどうすればよいですか?

すべての値table_1.data_2をNULLに設定しようとしています。ここで、data_1値は両方のテーブルで同じです。

UPDATE table_1.data_1, table_2.data_1
SET table_1.data_2 = NULL
WHERE table_1.data_1 = table_2.data_1

これが私の元の投稿の更新です。

UPDATE table_1.data_2
SET table_1.data_2 = NULL
WHERE table_1.data_1 IN
(SELECT table_2.data_1 FROM table_2 WHERE table_1.data_1 = table_2.data_1);
4

1 に答える 1

0

私はこれをテストしていませんが、このようなものがうまくいくと思います:

UPDATE table_1 SET data_2 = NULL 
  WHERE data_1 IN(SELECT table_1.data_1 
  FROM table_1, table_2 
  WHERE table_1.data_1 = table_2.data_1)

何かにアプローチする方法についてさまざまなアイデアが必要な場合に、このリソースが大好きです: http : //www.artfulsoftware.com/infotree/queries.php

アップデート:

UPDATE table_1
LEFT JOIN table_2 
ON table_1.data_1 = table_2.data_1 AND table_1.data_1 IS NOT NULL
SET table_1.data_2 = NULL;
于 2013-02-09T08:57:47.717 に答える