Votre question est assez claire (ne sais pas pourquoi d'autres ont répondu avec quelque chose que vous auriez voulu exclure spécifiquement), et quelque chose que j'avait passé plus d'une heure à essayer de trouver ...
Ce lien a été très utile http://www.timrosenblatt.com/blog/2008/03/21/insert-where-not-exists/
Sur mySQL 5.1.35 ...
mysql> CREATE TABLE testDupeSyntax (name varchar(10), place varchar(20));
Query OK, 0 rows affected (0.13 sec)
mysql>
mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
EXISTS(SELECT name FROM testDupeSyntax WHERE name='mango1' LIMIT 1);
Query OK, 1 row affected (0.06 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM testDupeSyntax;
+--------+--------+
| name | place |
+--------+--------+
| mango1 | mango2 |
+--------+--------+
1 row in set (0.00 sec)
mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
EXISTS(SELECT name FROM testDupeSyntax WHERE name='mango1' LIMIT 1);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM testDupeSyntax;
+--------+--------+
| name | place |
+--------+--------+
| mango1 | mango2 |
+--------+--------+
1 row in set (0.00 sec)
mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
EXISTS(SELECT name FROM testDupeSyntax WHERE name='mango1' AND place='mango2' LIMIT 1);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM testDupeSyntax;
+--------+--------+
| name | place |
+--------+--------+
| mango1 | mango2 |
+--------+--------+
1 row in set (0.00 sec)
mysql> INSERT INTO testDupeSyntax SELECT 'mango1', 'mango2' FROM DUAL WHERE NOT
EXISTS(SELECT name FROM testDupeSyntax WHERE name='mango1' AND place='mango3' LIMIT 1);
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM testDupeSyntax;
+--------+--------+
| name | place |
+--------+--------+
| mango1 | mango2 |
| mango1 | mango2 |
+--------+--------+
2 rows in set (0.00 sec)
mysql>
Je pense que vous pourriez vouloir préciser ce que vous voulez avec quelques exemples. La question est vraiment difficile à suivre. – JohnFx
La seule raison que je peux penser pour avoir besoin de cela est parce que vous n'avez pas de clé primaire. Si vous ne voulez pas de colonne auto-incrémentée dédiée à l'utilisation de la clé primaire, vous pouvez créer une clé primaire composite, souvent utile pour de nombreuses tables associatives. – nilamo