Mysql
 sql >> Base de données >  >> RDS >> Mysql

Combinez deux requêtes pour vérifier les doublons dans MySQL ?

Il y a en fait deux problèmes dans votre question. Le premier problème est de faire Number colonne unique et la seconde consiste à incrémenter la colonne Name en ajoutant un numéro s'il existe déjà.

PREMIÈRE PARTIE

Puisque le numéro est UNIQUE , appliquer un UNIQUE contrainte sur la colonne. Il peut s'agir d'une PRIMARY KEY ou une UNIQUE KEY .

Si la colonne n'a pas de KEY et vous voulez en faire PRIMARY , voici le ALTER déclaration :

ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)

mais si vous voulez seulement qu'il soit UNIQUE et non une clé primaire,

ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)

DEUXIÈME PARTIE

Vous pouvez en fait le faire sans utiliser join.

INSERT INTO TableName(Number, Name)
SELECT  124 AS Number, 
        CONCAT('Robert', COALESCE(MAX(CAST(REPLACE(Name, 'Robert', '0') AS UNSIGNED)) + 1,'')) AS Name
FROM    TableName
WHERE   Name LIKE 'Robert%'

Quelques détails :

lorsque la valeur fournie dans la colonne Number existe déjà, il renverra une erreur puisque la colonne est unique. J'ai lu un commentaire d'un message supprimé disant :"..Le numéro n'est pas unique, mais s'il existe, je ne veux pas entrer d'enregistrement." -- cela n'a aucun sens si vous ne voulez pas ajouter l'unicité sur la colonne. Comment saurez-vous si le numéro existe déjà ou non ? Faire une petite vérification de l'existence de Number se sent comme un peu au-dessus pour moi. Donc, ma meilleure recommandation est d'imposer l'unicité.