3

メインテーブルとインデックステーブルがあります。両方のテーブルは、「L_Status」と呼ばれる共通のプライマリ フィールドを共有します。「ステータス」というインデックステーブルの参照に基づいて、メインテーブルのデータを「L_Status」値 (整数) から「L_StatusLV」 (読み取り可能なテキスト値) に更新したいと考えています。これを実現するために PHPmyAdmin に入力したコードは次のとおりです。

UPDATE markers.L_Status 
FROM markers
INNER JOIN STATUS ON markers.L_Status = status.L_Status
WHERE  markers.L_Status = status.L_StatusLV

PHPmyAdmin は次のエラーを返します。

1064 - SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを参照してください

ここで構文エラーに関するアドバイスはありますか?

4

1 に答える 1

8

MySQL のUPDATE JOIN構文は SQL Server のものとは異なります (これはあなたが持っているもののように見えます):

UPDATE
  /* First join the tables */
  markers 
  INNER JOIN status ON markers.L_Status = status.L_Status
/* Then specify the new value in the SET clause */
SET markers.L_Status = status.L_StatusLV

ただし、上記で指摘したように、現在の値は整数です。人間が読める列であると私が想定しているように、列markers.L_StatusINT列ではなく列である場合CHAR/VARCHAR、これは機能しません。

完全な構文の詳細については、 MySQLUPDATE構文リファレンスを参照してください。特に、table_references.

于 2012-12-22T21:56:33.037 に答える