これが私のデータベーススキーマです
+------------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------------------+----------------+
| phone_number | varchar(64) | NO | UNI | NULL | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
+------------------+------------------+------+-----+---------------------+----------------+
一度に複数の電話番号( phone_numberは一意のキー)を挿入できるようにしたいのですが、重複している場合はauto_incrementフィールドをインクリメントしたくありません。
私が行った場合
INSERT INTO
phone_numbers (phone_number)
VALUES
(
%
VALUES
%
)
ON DUPLICATE KEY
UPDATE
id = id;
auto_incrementは、重複している場合でも増加します。
この質問:MySQLの重複挿入で自動インクリメントを防止すると、 一括挿入は処理されません。私はこのようなことをしたいです:
INSERT INTO
phone_numbers (phone_number)
SELECT
'12345',
'123456'
FROM
DUAL
WHERE
NOT EXISTS
(
SELECT
phone_number
FROM
phone_numbers
WHERE
phone_number IN
(
'12345',
'123456'
);
しかし、DUAL
テーブルは実際には複数の値をうまく処理しません。
何か案は?MySQL5.5。