0

少し問題があります。

これは私が得るSQLコードです:

INSERT INTO matches (match_id, league_name, league_id, test_one) 
VALUES (866860, 'Portugal',1,'testing') 
ON DUPLICATE KEY 
UPDATE league_name = 
  CASE match_id 
    WHEN 866860 
      THEN 'Portugal' END, 
league_id = 
  CASE match_id 
    WHEN 866860 
      THEN 1 END, 
test_one = 
  CASE match_id 
    WHEN 866860 
      THEN 'testing' END

問題は、既存の行を更新するのではなく、常に新しい行を挿入することです。「match_id」をAUTO_INCREMENT他の何かとして作成する必要があるためですか(現時点では、「id」フィールドはAUTO_INCREMENT

4

2 に答える 2

4

AUTO_INCREMENTここでは関係ありません。ただし、ONDUPLICATEKEYにはキーが必要です。より具体的には、主キーや一意のインデックスなどの一意のキー。

列名を考えると、それmatch_idが主キーではないのではないかと思います。

更新:複雑な構成のセットも記述しますCASE ... ENDVALUES()関数を見てください。

于 2013-01-15T15:44:29.900 に答える
0

「ONDUPLICATEKEY」という情報を更新するようにデータベースに指示しています。他のフィールドのいずれもUNIQUEキーでない場合、データベースは新しい行を挿入します。

idこのクエリの前にSELECTする(またはサブクエリにする)か、このテーブルに別のキーを追加して、各行に一意の値を設定することができます。スキーマについてはわかりませんが、とにまたがるマルチパートキーを作成できる可能性がありmatch_idますleague_id

于 2013-01-15T15:47:20.457 に答える