ホームページ > データベース > mysql チュートリアル > INNER JOIN を使用して MySQL データを正しく更新するにはどうすればよいですか?

INNER JOIN を使用して MySQL データを正しく更新するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-08 00:34:11
オリジナル
756 人が閲覧しました

How to Correctly Update MySQL Data Using INNER JOIN?

更新に内部結合を使用した MySQL クエリ

最近、ユーザーが MySQL で INNER JOIN を使用して UPDATE ステートメントを実行しようとしたときにエラーが発生しました5.0。正しいフィールド名を使用しているにもかかわらず、エラーが発生しました。

元のクエリは次のとおりです:

UPDATE  b
SET b.mapx = g.latitude,
    b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE (b.mapx = '' OR b.mapx = 0) AND
      g.latitude > 0
ログイン後にコピー

問題はクエリの構文にあります。これを解決するには、UPDATE ステートメントでテーブルに明示的に名前を付ける必要があります。修正されたクエリは次のとおりです:

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0
ログイン後にコピー

ユーザーには構文エラーも発生しました。修正されたクエリに構文エラーが含まれていないことを確認するために、テスト用に次のテーブルが作成されました。

CREATE TABLE business (business_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, mapx VARCHAR(255), mapy VARCHAR(255)) ENGINE=INNODB;

CREATE TABLE business_geocode (business_geocode_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, business_id INT UNSIGNED NOT NULL, latitude VARCHAR(255) NOT NULL, longitude VARCHAR(255) NOT NULL, FOREIGN KEY (business_id) REFERENCES business(business_id)) ENGINE=INNODB;
ログイン後にコピー

MySQL 5.5.8 を使用してこれらのテーブルに対して修正されたクエリを実行すると、構文エラーは発生しませんでした。クエリの結果は、一致または変更された行がないことを示しています。

以上がINNER JOIN を使用して MySQL データを正しく更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート