2008-10-02 6 views

Répondre

3

Je pense que l'une de vos suggestions dans la question sont appropriés. En fonction de la façon dont vous utilisez ceci, vous pouvez potentiellement gagner du temps en faisant un INSERT IGNORE, ce qui vous permet d'insérer une nouvelle ligne si la clé primaire n'existe pas. S'il existe, l'erreur est ignorée afin que vous puissiez continuer normalement.

D'autres options similaires en fonction de votre utilisation incluent l'utilisation des types d'inserts REPLACE ou INSERT ON DUPLICATE KEY UPDATE. Cela vous permet de mettre à jour l'entrée existante si la clé primaire existe déjà, sinon elle insère simplement votre nouvelle entrée.

1

Effectuez les premiers et comptez les résultats (toujours 0 ou 1). Facile et rapide

0

Exemple

Select count(key) into :result from table where key = :theValue 

Si vous essayez de choisir entre une insertion ou la mise à jour, utilisez une instruction MERGE dans Oracle. Je crois que MS-SQL est quelque chose comme une déclaration UPSERT.

-1

Je pense qu'il serait plus intuitif et plus simple d'utiliser IF EXISTS.


IF EXISTS (SELECT key FROM table WHERE key = 'value') 
    PRINT 'Found it!' 
ELSE 
    PRINT 'Cannot find it!' 
+0

si existe ne fait pas partie de mysql –

1

Je ferais:

SELECT 1 FROM table WHERE id key = 'value' 

Tout le reste est susceptible d'interférer avec l'optimisation des requêtes un peu, je bâton avec ça.

Edit: Bien que je me sois juste rendu compte que je ne pense pas l'avoir jamais fait en MySQL, même si je ne vois pas pourquoi cela ne fonctionnerait pas.

0

SELECT 1 FROM mytable OERE mykey = 'valeur' ​​LIMIT 1

Questions connexes