ホームページ  >  に質問  >  本文

FROM句には更新対象テーブルを指定できません

<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粉354602955P粉354602955419日前347

全員に返信(2)返信します

  • P粉237125700

    P粉2371257002023-08-28 13:59:47

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

    リーリー

    ...

    リーリー ###または### リーリー

    返事
    0
  • P粉481815897

    P粉4818158972023-08-28 13:51:38

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

    リーリー

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


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

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

    この解決策は

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

    返事
    0
  • キャンセル返事