テーブルEmpがあり、行2のアドレスIDを行1のアドレスIDと同じにしたい場合、ストアドプロシージャなしでそれを実行できますか?
何かのようなもの
UPDATE Emp SET address_id = (SELECT address_id FROM Emp WHERE id = 1) WHERE id = 2;
たぶん私はEmpe1、Emp e2セットを更新するようなことをすることができます...?
ありがとう
これはあなたの仲間のために働くはずです。
UPDATE Emp t, (SELECT address_id
FROM Emp
WHERE ID = 1) t1
SET t.address_id = t1.address_id
WHERE ID = 2
更新は(他のデータベースで)機能しますが、テーブルがそれ自体を更新できないという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';
とにかく、あなたはグレゴロジーの答えで行くべきです。これは将来を見据えたものであり、2つ以上のフィールドを更新する場合に使用できます。sqlfiddleでのGregologyの回答デモ:http ://www.sqlfiddle.com/#!2 / 5f373 / 10
これを試してください。
UPDATE Emp SET address_id =(SELECT t.address_id FROM Emp t WHERE t.id = 1)WHERE id = 2
--テーブルのエイリアシングは、更新ステートメントのサブクエリを介してのみ実行できます。
Rhian A.(NZT)
実際、投稿したクエリは機能するはずです。この機能はサブクエリと呼ばれます。