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 🙂
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
Vous devez vous connecter pour publier un commentaire.
Si c'est une procédure que vous écrivez, vous devriez essayer:
Si c'est une requête,
BEGIN
etEND
n'ont rien à faire ici.Modifier
Bien, il n'y a pas vraiment plus à dire,
IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN SELECT * FROM tbl_cities; END IF
est tout simplement pas le respect de la base MySQL Instruction SELECT.Vous devriez commencer avec
SELECT
... etc...IF ((SELECT COUNT(id) FROM tbl_states) > 0) THEN SELECT * FROM tbl_cities; END IF
Veuillez voir mon edit et le lien donné.
Olivier voulez-vous dire () sont en sus? J'ai enlever avant et après la première
select
déclaration?Veuillez prendre un coup d'oeil à mon montage sur la question.
pourriez-vous m'aider s'il vous plaît? Malheureusement, aucun des différentes suggestions ici ne pouvaient pas m'aider. Je veux insérer une nouvelle ligne, si une instruction select renvoie
count=0
, et de mettre à jour une ligne si elle renvoiecount>0
. J'espère que je pourrais montrer mon besoin de vous.OriginalL'auteur Olivier Coilland
Je pense que vous avez juste besoin de ceci:
Veuillez prendre un coup d'oeil à mon édité question une fois de plus.
OriginalL'auteur xdazz
Ici, vous devez utiliser CAS pour créer de l'exécution conditionnelle..
Essayez cette..
CASE WHEN (1<2) THEN SELECT * FROM tbl_states; WHEN (1>2) THEN SELECT * FROM tbl_cities; END CASE
Mais je suis d'erreur.pourquoi ne pas vous utiliser la procédure?
munurajhada, je voudrais savoir pourquoi il y a ces problèmes en travaillant avec MySQL. J'ai utilisé une simple condition
1<2
dans mon code mais il ne fonctionne pas à tous. Ce qui est plus important pour moi de savoir quelle est la question?Comme je vous l'ai dit, vous juste ne peut pas écrire ce que vous avez fait dans une requête.
BEGIN
,END
, etc ne sont utilisés que dans des procédures.no u ne peut pas, de sa simple condition pour vous seulement!!!!! comme un autre utilisateur
count(tbl_states)
dans vous code serveur et exécuter la mise à jour/requête d'insertion de l'acc.OriginalL'auteur manurajhada
Peut-être cela aide:
OriginalL'auteur Sashi Kant