私はこれに対する答えを探し回り、 IGNORE と WHERE NOT EXISTS に出くわしましたが、どちらも私が達成しようとしていることとは少し異なるようです。私の MYSQL テーブルは次のように表示されます。
id(自動インクリメント INT)、文字名(VARCHAR)、文字領域(VARCHAR)、文字領域(VARCHAR)
私のデータは、データベースに既にあるものも含め、ゲームのすべてのキャラクターを返す Web サイトから取得されます。
すべてのキャラクターのリストを保持したいのですが、重複はありません。私の問題は、同じ名前が異なる地域/領域の組み合わせで表示される可能性があるため、重複しているかどうかを判断する前に、キャラクターの名前、領域、および領域を比較する必要があるようです。
次のように、3 つの非自動インクリメント列のすべての値を比較してみました。
REPLACE INTO characters ( charactername
, characterregion
, characterrealm
) VALUES ('Peter','AMERICA','Realm1') WHERE NOT EXISTS(SELECT * FROM characters WHERE charactername
='Peter' AND characterregion
='AMERICA' AND characterrealm
='Realm1')
ただし、構文が正しくないため、MYSQL エラーが返されます。INSERT IGNORE INTO も試しました...ただし、ID値のみをチェックしているようです。自動インクリメントに設定されているため、IDを確認する必要はまったくないと思います。
どんな助けでも大歓迎です。助けになれば、私はこれの他の部分にPHPを使用しています。再度、感謝します。