/ / MySQL: Obtenir l'identifiant s'il existe, sinon insérer et renvoyer l'identifiant - mysql, select, if-statement, insert

MySQL: Obtenir l'identifiant s'il existe, sinon insérer et renvoyer l'identifiant - mysql, select, if-statement, insert

J'essaie de construire une seule requête quirenverra l'ID de l'enregistrement NAME spécifié ou, s'il n'existe pas, insère le nom et renvoie l'ID. (ID est un champ d'auto-incrémentation, NAME n'aura pas de doublons mais est un varchar 1024 et ne pourra donc pas avoir l'attribut unique)

Ma requête SQL devrait être quelque chose comme:

IF EXISTS(SELECT 1 FROM NAMES WHERE NAME="DAVE")
THEN
SELECT FROM NAMES WHERE NAME="DAVE"
ELSE
INSERT INTO NAMES(`NAME`) VALUES ("DAVE")
ENDIF;

(évidemment ce n'est pas valide SQL ... mais je ne sais pas par où commencer)

Exemple de tableau NOMS:

+----+----------+
| ID | NAME     |
+----+----------+
| 1  | ANDY     |
| 2  | BOB      |
| 3  | CARL     |
+----+----------+

Devrais-je diviser cela en plusieurs requêtes?

Réponses:

0 pour la réponse № 1

Divisez la tâche que vous essayez d'accomplir:

  1. Commencez par vérifier s’il existe une ligne portant le nom spécifique

  2. Si oui, sélectionnez la ligne entière et récupérez l'id, sinon insérez les données dans la base de données.

Vous pouvez utiliser SELECT LAST_INSERT_ID () après votre opération d’insertion pour obtenir l’ID de la nouvelle ligne insérée.