trigger then equal ejemplo mysql if-statement select-query

then - mysql if exists



Usar una instrucción IF en una consulta MySQL SELECT (3)

Estoy tratando de usar una declaración IF en una consulta de selección de MySQL.

Recibo un error después de la instrucción AND donde aparece el primer 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;

¿Por qué esto no funciona y cuál es la forma correcta de hacer una declaración IF en una consulta MySQL?


La construcción IF / THEN / ELSE que está utilizando solo es válida en procedimientos y funciones almacenados. Su consulta tendrá que ser reestructurada porque no puede usar la función IF () para controlar el flujo de la cláusula WHERE de esta manera.

La función IF () que se puede usar en las consultas está destinada principalmente a ser utilizada en la parte SELECT de la consulta para seleccionar datos diferentes en función de ciertas condiciones, no tanto para ser utilizada en la parte WHERE de la consulta:

SELECT IF(JQ.COURSE_ID=0, ''Some Result If True'', ''Some Result If False''), OTHER_COLUMNS FROM ... WHERE ...


intenta este código funcionó para mí

SELECT user_display_image AS user_image, user_display_name AS user_name, invitee_phone, (CASE WHEN invitee_status = 1 THEN "attending" WHEN invitee_status = 2 THEN "unsure" WHEN invitee_status = 3 THEN "declined" WHEN invitee_status = 0 THEN "notreviwed" END) AS invitee_status FROM your_table


Cómo usar una declaración IF en la "lista de selección" de MySQL:

select if (1>2, 2, 3); //returns 3 select if(1<2,''yes'',''no''); //returns yes SELECT IF(STRCMP(''test'',''test1''),''no'',''yes''); //returns no

Cómo utilizar una declaración IF en la lista de condiciones de búsqueda de cláusulas MySQL where:

create table penguins (id int primary key auto_increment, name varchar(100)) insert into penguins (name) values (''rico'') insert into penguins (name) values (''kowalski'') insert into penguins (name) values (''skipper'') select * from penguins where 3 = id -->3 skipper select * from penguins where (if (true, 2, 3)) = id -->2 kowalski

Cómo usar una instrucción IF en MySQL "que tiene condiciones de búsqueda de cláusulas":

select * from penguins where 1=1 having (if (true, 2, 3)) = id -->1 rico

Use una declaración IF con una columna utilizada en la lista de selección para tomar una decisión:

select (if (id = 2, -1, 1)) item from penguins where 1=1 --> 1 --> -1 --> 1

Si las declaraciones incrustadas en las consultas SQL es un mal "olor a código". El código incorrecto tiene un alto "WTF por minuto" durante la revisión del código. Esta es una de esas cosas. Si veo esto en producción con tu nombre, automáticamente no te agradaré.