FROM句には更新対象テーブルを指定できません
P粉354602955
2023-08-27 14:46:57
<p>単純な mysql テーブルがあります: </p>
<pre class="brush:php;toolbar:false;">CREATE TABLE IF NOT EXISTS `pers` (
`persID` int(11) NOT NULL AUTO_INCREMENT、
`name` varchar(35) NOT NULL、
`gehalt` int(11) NOT NULL、
`chefID` int(11) デフォルト NULL、
主キー (`persID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;
INSERT INTO `pers` (`persID`、`name`、`gehalt`、`chefID`) 値
(1, 'blb', 1000, 3),
(2, 'as', 1000, 3),
(3, 'シェフ', 1040, NULL);</pre>
<p>次のアップデートを実行しようとしましたが、エラー 1093 のみが発生しました: </p>
<pre class="brush:php;toolbar:false;">P ごとに更新
SET P.ゲハルト = P.ゲハルト * 1.05
WHERE (P.chefID が NULL ではない)
またはゲハルト <;
(選択する (
SELECT MAX(ゲハルト * 1.05)
マサチューセッツ州から
WHERE MA.chefID = MA.chefID)
AS_per
))</pre>
<p>エラーを検索し、mysql の次のページ http://dev.mysql.com/doc/refman/5.1/en/subquery-restrictions.html を見つけましたが、役に立ちませんでした。 </p>
<p>SQL クエリを修正するにはどうすればよいですか? </p>
これは 3 つのステップで実行できます:
リーリー...
リーリー ###または### リーリー問題は、どんな愚かな理由であっても、MySQL では次のようなクエリを作成できないことです:
リーリーつまり、テーブルに対して
UPDATE
/INSERT
/DELETE
操作を実行する場合、内部的に をクエリすることはできません (ただし、 は外部テーブルのフィールドを参照できます...)解決策は、以下に示すように、サブクエリ内の
これにより、明らかに必要なフィールドが一時テーブルに暗黙的にコピーされるため、これは許可されます。myTable
インスタンスを(SELECT * FROM myTable)
に置き換えることです。 リーリーここ で見つかりました。この記事のメモ: