テーブル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のセットのような何かを行うことができます...
ような何か?ありがとうございます。
テーブル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のセットのような何かを行うことができます...
ような何か?ありがとうございます。
これはあなたの仲間のために働くはずです。
UPDATE Emp t, (SELECT address_id
FROM Emp
WHERE ID = 1) t1
SET t.address_id = t1.address_id
WHERE ID = 2
実際に投稿したクエリは機能するはずです。この機能をサブクエリと呼びます。
これを試してください。
UPDATEのEmp SETのADDRESS_IDは=(EMP Tからt.address_id SELECT WHERE t.id = 1) WHERE ID = 2
は - テーブルのエイリアシングは、UPDATE文のサブクエリを通して行うことができます。
Rhian A.(NZT)
あなたの更新は(他のデータベース上で)作業することができますが、テーブル自体を更新することができないというの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
MySQLでは、サブクエリの同じテーブルからクエリを実行してもテーブルを更新できません。( –
これはわかりません。 – eWolf