À l'aide d'une Instruction if dans une base de données MySQL requête SELECT
Je suis en train d'utiliser un IF
déclaration dans une base de données MySQL requête select.
Je reçois un message d'erreur après la AND
énoncé où le premier IF
.
SELECT J.JOB_ID,E.COMPANY_NAME,J.JOB_DESC,JT.JOBTYPE_NAME,J.COMPENSATION,ST.STATE_NAME,MC.METRO_CITY_NAME,I.INDUSTRY_NAME,
J.JOB_CONTACT_PERSON,J.DT_INSRT,J.JOB_TITLE,J.JOB_EXP_DATE,J.SKILLS
FROM JOBS J
JOIN EMPLOYER E ON J.COMPANY_ID=E.COMPANY_ID
JOIN LOOKUP_JOBTYPE JT ON J.JOB_TYPE=JT.JOBTYPE_ID
JOIN LOOKUP_STATE ST ON J.STATE_ID=ST.STATE_ID
JOIN JOBS_LOCATION JL ON J.JOB_ID=JL.JOB_ID
JOIN LOOKUP_METRO_CITY MC ON JL.METRO_CITY_ID=MC.METRO_CITY_ID
JOIN LOOKUP_INDUSTRY I ON J.INDUSTRY_ID=I.INDUSTRY_ID
JOIN JOBS_QUALIFICATION JQ ON J.JOB_ID=JQ.JOB_ID
JOIN LOOKUP_DEGREE_QUALIFICATION LDQ ON LDQ.QUALIFICATION_ID = JQ.QUALIFICATION_ID
WHERE J.ACTIVE='Y' AND J.DT_INSRT > COALESCE(pEmailSntDt,DATE_SUB(SYSDATE(),INTERVAL 4 DAY))
AND
IF(JQ.COURSE_ID=0)
THEN
IF(JQ.DEGREE_ID=0)
THEN J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
END IF
ELSE
JQ.COURSE_ID=pCourseId OR IF(JQ.DEGREE_ID=0)
THEN
J.SKILLS LIKE CONCAT('%', pSkills,'%')
ELSE
JQ.DEGREE_ID=pDegreeId OR J.SKILLS LIKE CONCAT('%', pSkills,'%')
END IF
END IF
GROUP BY J.JOB_ID ORDER BY J.DT_INSRT DESC;
Pourquoi n'est-ce pas le travail et quelle est la bonne façon de le faire d'une instruction if dans une requête MySQL?
- Je ne pense pas que vous pouvez utiliser que des instructions dans une requête, dans un
WHERE
clause. Peut-être que vous pouvez réécrire la requête à l'aide deIF()
fonction à la place? dev.mysql.com/doc/refman/5.0/en/...
Vous devez vous connecter pour publier un commentaire.
Le if/then/ELSE construire vous utilisez n'est valable que dans des procédures stockées et des fonctions. Votre requête doivent être restructurées, parce que vous ne pouvez pas utiliser le SI() la fonction de contrôler l'écoulement de la clause where comme ça.
Le SI() fonction qui peut être utilisé dans les requêtes est principalement destinée à être utilisée dans la partie SELECT de la requête pour sélectionner les différentes données en fonction de certaines conditions, non pas tant pour être utilisé dans la partie de la requête:
Comment utiliser une instruction if dans la base de données MySQL "liste de sélection":
Comment utiliser une instruction if dans la base de données MySQL clause where condition de recherche liste:
Comment utiliser une instruction if dans la base de données MySQL "clause having conditions de recherche":
Utiliser une instruction if avec une colonne utilisée dans la liste de sélection de prendre une décision:
Si les déclarations sont intégrées dans les requêtes SQL est une mauvaise "odeur de code". Mauvais code a élevé "WTF de la minute" lors de l'examen du code. C'est une de ces choses. Si je vois ce de la production avec votre nom, je vais automatiquement vous aime pas.
essayer ce code a fonctionné pour moi