次の3つの列を含むMySQLテーブルがあるとします。 id
、、a
およびb
という名前の列id
はAUTO INCREMENT
フィールドです。次のようなクエリをMySQLに渡すと、正常に機能します。
REPLACE INTO `table` (`id`, `a`, `b`) VALUES (1, 'A', 'B')
しかし、フィールドをスキップするid
と、機能しなくなります。これは予想どおりです。
クエリignore
の一部のフィールドにアクセスする方法があるかどうかを知りたいです。REPLACE
したがって、上記のクエリは次のようになります。
REPLACE INTO `table` (`a`, `b`) VALUES ('A', 'B')
なぜそんなものが必要なのですか?
SELECT
行が存在するかどうかを確認するために、クエリを使用してデータベースをチェックする必要がある場合があります。存在する場合UPDATE
は既存の行に移動する必要があり、存在しない場合INSERT
は新しい行に移動する必要があります。REPLACE
単一のクエリで同様の結果(ただし同じではない)を達成できるかどうか疑問に思っています。
なぜ同じ結果になれないのですか?既存の行と新しい行がREPLACE
失われるため、現在の行が失われ、自動インクリメントされた値が増加します。対照的に、クエリでは、フィールドは変更されません。DELETE
INSERT
primary key
UPDATE
primary key
AI
MySQLREPLACE 。_