Quelle est la bonne syntaxe d'une instruction if dans MySQL?

J'ai un petit et simple code de MySQL. Mais à chaque fois que je le lance, j'obtiens l'erreur #1064. Pouvez-vous me dire quelle est mon erreur ici?

IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
    BEGIN
        SELECT * FROM tbl_cities;
    END
END IF

J'ai aussi utilisé d'autres conditions comme ci-dessous, mais encore une fois j'ai eu une erreur.

IF (1=1) THEN
    BEGIN
        SELECT * FROM tbl_cities;
    END
END IF

Ce que je veux faire, c'est quelque chose comme ceci:

IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN
    BEGIN
        UPDATE ...
    END
ELSE
    BEGIN
        INSERT ...
    END
END IF
Êtes-vous d'écrire une requête ou une procédure ? C'est vraiment pas la même chose.
C'est une requête Olivier
Quel est votre objectif? Êtes-vous réellement désireux d'effectuer une INSERTION sur une table différente si le tbl_states tableau ne contient pas d'enregistrements où le champ id a une valeur non nulle? Parce que c'est ce que votre code est impliquant. Ou, prendre un saut logique, êtes-vous en train d'essayer de mettre à jour une ligne avec l'id spécifié, s'il existe, et l'insérer dans l'autre cas?
Alors j'ai peur que ça devient vraiment compliqué et nous aurons besoin de plus d'informations sur vos tables. Mais vous devriez également envisager une procédure pour ce genre de job, et regardez manurajhada de la réponse 🙂

OriginalL'auteur Mohammad Saberi | 2012-07-11