FROM句で更新のターゲットテーブル「a」を指定することはできません-MySQLは同じテーブルデータを使用してフィールドを更新します

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公式アカウントをフォローしてください。定期的にオリジナル記事を掲載していきますので、よろしくお願いします。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/vxzhg/article/details/103177993