2

「year、month、day」列が他のテーブルへの外部キーであるbirthdate、year、month、day列があります。私がやりたいのは、各birthdateに対してget id(year(birthdate))をyear列の値にすることです。月と日の列についても同じです。

MySQLでこれを行うにはどうすればよいですか?

私はこの解決策を試しました:

update member set year=(select All_years.id from All_years,member where All_years.fromY=year(member.birthdate)) where id=30471;

ただし、「エラー1093(HY000):FROM句で更新するターゲットテーブル'member'を指定できません」が発生します。

前もって感謝します

4

2 に答える 2

0

membersサブクエリのテーブルから選択する必要はありません。代わりに、更新するテーブルを使用してください。

UPDATE member
SET year=(
   SELECT id FROM all_years
   WHERE fromY=year(member.birthdate)
)
WHERE id=30471;

しかし、年/月/日付が外部キーである理由はありますか?

于 2009-10-19T07:39:57.117 に答える
-1
SELECT birthdate FROM member INTO @myBirthdate;

update member set year=(select All_years.id from All_years,member where All_years.fromY=year(@myBirthdate)) where id=30471;

同じことが月と日にも当てはまります。

于 2009-10-19T07:46:22.563 に答える