FROM句には更新対象テーブルを指定できません
P粉354602955
P粉354602955 2023-08-27 14:46:57
0
2
386
<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>
P粉354602955
P粉354602955

全員に返信(2)
P粉237125700

これは 3 つのステップで実行できます:

リーリー

...

リーリー ###または### リーリー
いいねを押す +0
P粉481815897

問題は、どんな愚かな理由であっても、MySQL では次のようなクエリを作成できないことです:

リーリー

つまり、テーブルに対して UPDATE/INSERT/DELETE 操作を実行する場合、内部的に をクエリすることはできません (ただし、 は外部テーブルのフィールドを参照できます...)


解決策は、以下に示すように、サブクエリ内の myTable インスタンスを (SELECT * FROM myTable) に置き換えることです。 リーリー

これにより、明らかに必要なフィールドが一時テーブルに暗黙的にコピーされるため、これは許可されます。

この解決策は

ここ で見つかりました。この記事のメモ:

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート