FROM句で更新するターゲットテーブル「a」を指定できません
このエラーが発生しましたか?
updateステートメントを使用してデータテーブルを更新したときにこのエラーが発生しました。私のシナリオは、同じテーブルのデータ行のフィールドを、同じテーブルの別の行の対応するフィールドと同じ値に更新することです。
以下は解決プロセスです。
1.解決すべき問題
MySQLでは、あるデータ行の既存のフィールドを使用して、別のデータ行のフィールドを更新する必要があります。たとえば、次のデータベーステーブルstudent_infoがあるとします。
student_info
id | 名前 | 学校 |
---|---|---|
1 | 小明 | クワンヘン小学校 |
2 | 蕭紅 | ホグワーツ魔法魔術学校と魔法使い小学校 |
3 | Xiaohua | Lizhuang小学校 |
ここで、XiaomingとXiaohongの学校を、Xiaohuaの学校と一致するように変更する必要があります。SQLをどのように作成する必要がありますか?
2.自然だが間違った書き方
UPDATE school_info
SET school = (
SELECT
school
FROM
school_info
WHERE
NAME = '小华'
)
WHERE
NAME IN ('小明', '小红')
このように
記述すると、次のエラーが報告されます。FROM句で更新するターゲットテーブル「a」を指定できない
ため、このように記述することはできません。MySQLはそのような書き込みをサポートしていません。
3.正しい書き方
UPDATE school_info AS s1,
school_info AS s2
SET s1.school = s2.school
WHERE
s1. NAME IN ('小明', '小红')
AND s2. NAME = '小华'
このようにして、上記のエラーを回避し、データを正常に更新できます。
さらに、私の記事が気に入った場合は、コードをスキャンするか、「Javaインタビューのヒント」を直接検索して、私のWeChat公式アカウントをフォローしてください。定期的にオリジナル記事を掲載していきますので、よろしくお願いします。