私はauto_inc id(主キー)を持つテーブルを持っています。 重複する行の挿入を回避しようとしています。重複行のmySQLに重複行を挿入するのを避ける
例:それは自動的にMySQLが生成されるため
id | field a | field b | field c |
1 4 6 7
2 4 6 7
キー(ID)が重複していないが、他のすべてのフィールドは同一です。
私はauto_inc id(主キー)を持つテーブルを持っています。 重複する行の挿入を回避しようとしています。重複行のmySQLに重複行を挿入するのを避ける
例:それは自動的にMySQLが生成されるため
id | field a | field b | field c |
1 4 6 7
2 4 6 7
キー(ID)が重複していないが、他のすべてのフィールドは同一です。
フィールドa、b、cにユニークなインデックスを作成します。
ALTER TABLE `table` ADD UNIQUE (
`a` ,
`b` ,
`c`
);
ON DUPLICATE KEY UPDATEを使用し、フィールドを一意とする必要があります。
あなたはDUPLICATE KEY UPDATE ON指定して、行が は古い行の UPDATEが実行され、UNIQUEインデックスまたはPRIMARY KEYで重複する値を引き起こすことに挿入されている場合。
フィールドは一意ではありません。たとえば、フィールドa = 6を何度も使用することはできますが、許容されないのはa、b、cの同じ値の組み合わせです –
複合ユニークインデックスを作成する必要があります。http: /stackoverflow.com/questions/635937/how-do-i-specify-unique-constraint-for-multiple-columns-in-mysql – aleroot
ありがとうございました! –
3つの列を複合キーにします。
「行」ではなく**列**と言っていましたか? –
これも使用できます。
INSERT INTO `tableName` (`field1`, `field2`,`field3`)
SELECT `field1`, `field2`,`field3` FROM `tableName`
WHERE NOT EXISTS (SELECT 1
FROM `tableName`
WHERE
`field1` = 'value' AND `field2` = 'value' AND `field3` = 'value'
);
が、フィールドは一意ではありません、例えば、それはフィールドA = 6何回も持って結構です、何を許可されていないことは、これはまったく同じものです、B、C –
に同じ値の組み合わせであります;-)それは3つの別個の鍵ではなく、組み合わされた鍵です。 – Lennart
ああ、素晴らしい。ありがとうございました! –