2010-07-13 6 views
2

pourquoi j'obtiens l'erreur:syntaxe SQL, si elles existent

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT id FROM mytable WHERE id = '1')' at line 1 

requête:

IF EXISTS(SELECT id FROM mytable WHERE id = '1') 

Merci

+0

Nous devons voir le reste du code que vous essayez d'utiliser. –

+1

Est-ce toute la requête? Que fait la déclaration IF? Ne devrait-il pas y avoir un bloc de déclaration après? – David

+0

Ouais, si c'est toute la requête - ça ne marche pas parce que ce n'est pas une instruction complète. Si ce n'est pas le cas, nous avons besoin du reste pour juger de ce qui se passe. – JAL

Répondre

6

IF EXISTS ne fonctionne que dans une procédure stockée. En dehors d'une procédure stockée, IF() est une fonction qui prend 3 arguments. L'utilisation correcte serait

SELECT IF(EXISTS(SELECT `column` FROM `table` WHERE `id` = `1`), 1, 0); 
0

Essayez d'utiliser

Declare @ID Integer 
Select @ID=id From mytable where id=1 
IF @ID is not null OR IF @ID > 0 
Begin 
.... 
End 
+1

Cela ne devrait pas avoir d'importance. 'WHERE id = '1'' fonctionnera bien même si' id' est un entier. –

+0

Je suis d'accord avec Mark Byers - MySQL fait la conversion de type de données implicite entre les types de données INT et chaîne. –

+0

Merci pour votre commentaire, vous avez raison, j'ai mis à jour mon message. –

0

pas sur une machine à droite MySQL maintenant, mais il semble que c'est parce que la déclaration est incomp lete, vous devez lui dire quoi faire si l'ID existe.

IF EXISTS (...) faire quelque chose

0

IF EXISTS ne fait pas de sens dans MySQL. Voir subqueries with EXISTS or NOT EXISTS dans la documentation MySQL sur l'utilisation.

Fondamentalement, vous devez l'utiliser dans une déclaration, et non comme un bloc logique

+1

IF EXISTS est souvent utilisé dans SQL Server, car il est moins prolixe que 'IF (SELECT COUNT() ...)> 0' etc. –

Questions connexes