MySql S'il existe sélectionnez insérer ELSE
Je souffre à présent de deux heures maintenant. Je veux choisir ou de l'insertion d'un enregistrement. Si l'enregistrement existe pas sélectionner son ID d'autre de l'insérer et bénéficier de la nouvelle ID inséré. Pour l'instant, je suis en train de l'exécuter, mais j'obtiens toujours une erreur
SELECT CASE WHEN (SELECT COUNT(*) FROM Domains WHERE Domain = @domain)>0
THEN
(SELECT Domain_ID FROM Domains WHERE Domain = @domain)
ELSE
INSERT INTO Domains(Domain_ID,Domain,Disabled,Description) VALUES(@Domain_ID,@Domain,@Disabled,@Description);
Pourquoi requête pour count(*) ? juste de la requête pour le domaine de match, si il y aura des non-vide de suite, de retour, il reste insérer des données.
Êtes-vous essayer de faire ça dans une Procédure?
Je suis toujours à obtenir le coup de syntaxe de MySQL (donc je ne vais pas poster cela comme une réponse), mais je crois que vous voulez quelque chose le long des lignes de
Je l'ai fait essayer si sinon, s'il existe, et des trucs comme ça.. j'ai fini avec le code que vous voyez et je reçois un message d'erreur sur l'insertion.. je suis howping-je obtenir une réponse parce que je ne sais rien à propos de MySql
Pour quelqu'un d'autre c'est de la souffrance avec quelque chose comme ça. Parce que je ne connais pas beaucoup de MySql je desided à de simples requêtes sur insert, select, update, delete et faire ma logique programmaticaly. J'ai besoin de faire beaucoup de requêtes à la base de données et depuis que je suis en utilisant ASP.NET j'espère que ce ne sera pas trop lent..
Êtes-vous essayer de faire ça dans une Procédure?
Je suis toujours à obtenir le coup de syntaxe de MySQL (donc je ne vais pas poster cela comme une réponse), mais je crois que vous voulez quelque chose le long des lignes de
IF EXISTS (SELECT 1 FROM Domains WHERE Domain = @domain)
... au lieu de SELECT CASE WHEN (SELECT COUNT(*) FROM Domains WHERE Domain = @domain)>0
Je l'ai fait essayer si sinon, s'il existe, et des trucs comme ça.. j'ai fini avec le code que vous voyez et je reçois un message d'erreur sur l'insertion.. je suis howping-je obtenir une réponse parce que je ne sais rien à propos de MySql
Pour quelqu'un d'autre c'est de la souffrance avec quelque chose comme ça. Parce que je ne connais pas beaucoup de MySql je desided à de simples requêtes sur insert, select, update, delete et faire ma logique programmaticaly. J'ai besoin de faire beaucoup de requêtes à la base de données et depuis que je suis en utilisant ASP.NET j'espère que ce ne sera pas trop lent..
OriginalL'auteur kms | 2012-10-01
Vous devez vous connecter pour publier un commentaire.
Votre cas est manquant Fin
De toute façon, votre autre doit retourner un select, insert ne retourne rien.
si vous souhaitez insérer s'il n'existe pas, puis retourner la valeur insérée (ou de retour si existe)
ce faire:
Cela permettra d'insérer si n'existe pas, et revenir ensuite. Si il existe déjà, de ne pas insérer, et renvoie la valeur
Modifier Jan 2016
La dernière requête ne fonctionne pas sur les
MySql
, c'est unMSSQL
syntaxeCASE
devrait également avoir unTHEN
juste avantEND
si cela fait sens.MySQL ne supporte pas
INTO ... WHERE
? stackoverflow.com/questions/485039/mysql-insert-where-queryvous avez raison - ajout de précisions
OriginalL'auteur Gonzalo.-
Sans avoir de l'impact sur la performance et la mise en cache, si Domain_ID est un
auto_increment
champ, un moyen simple d'obtenir les résultats que vous voulez est d'utiliser leON DUPLICATE KEY
de la clause de laINSERT
déclaration:Voir la section de la queue de la
ON DUPLICATE KEY UPDATE
Documentation de MySQL.OriginalL'auteur ravi
Je ne vois pas si
Vu que vous semblez être de passage, il en de toute façon, en fait, je ne comprends pas pourquoi vous en avez besoin, de retour de la requête?
OriginalL'auteur Tony Hopkinson