2012-05-09 5 views
2

テーブルEmpがあり、行2のアドレスIDを行1のアドレスIDと同じにするには、ストアドプロシージャなしで実行できますか?別の行(Mysql)でDB行を更新する

UPDATE Emp SET address_id = (SELECT address_id FROM Emp WHERE id = 1) WHERE id = 2; 

たぶん私は更新のemp E1はEMP e2のセットのような何かを行うことができます...

ような何か?

ありがとうございます。

答えて

3

これはあなたの仲間のために働くはずです。

UPDATE Emp t, (SELECT address_id 
    FROM Emp 
    WHERE ID = 1) t1 
SET t.address_id = t1.address_id 
WHERE ID = 2 
-1

実際に投稿したクエリは機能するはずです。この機能をサブクエリと呼びます。

+0

MySQLでは、サブクエリの同じテーブルからクエリを実行してもテーブルを更新できません。( –

+1

これはわかりません。 – eWolf

0

これを試してください。

UPDATEのEmp SETのADDRESS_IDは=(EMP Tからt.address_id SELECT WHERE t.id = 1) WHERE ID = 2

は - テーブルのエイリアシングは、UPDATE文のサブクエリを通して行うことができます。

Rhian A.(NZT)

1

あなたの更新は(他のデータベース上で)作業することができますが、テーブル自体を更新することができないというのMySQLの主張に、あなたがこれを行うことができない例:

update tbl 
    set address = (select address from tbl where name = 'paul') 
where name = 'george'; 

しかし、あなたは仕事の周りに行うことができます。http://www.sqlfiddle.com/#!2/5f373/6

update tbl 
    set address = (select address from 
         (select address from tbl where name = 'paul') x) 
where name = 'george'; 

とにかく、あなたはGregology's answerに行く必要があります。これは将来的なもので、2つ以上のフィールドを更新する場合に使用できます。グレゴロジーの答えは、sqlfiddleのデモ:http://www.sqlfiddle.com/#!2/5f373/10

関連する問題