Saltar al contenido

Uso de una instrucción IF en una consulta SELECT de MySQL

Indagamos en internet y así regalarte la respuesta para tu inquietud, si continúas con dudas puedes dejarnos la inquietud y contestamos porque estamos para servirte.

Solución:

La construcción IF/THEN/ELSE que está utilizando solo es válida en funciones y procedimientos almacenados. Su consulta deberá reestructurarse 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 usarse en la parte SELECCIONAR de la consulta para seleccionar diferentes datos en función de ciertas condiciones, no tanto para usarse en la parte DONDE de la consulta:

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

Cómo usar una instrucció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 usar una instrucción IF en la lista de condiciones de búsqueda de la cláusula where de MySQL:

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 declaración IF en MySQL "tener condiciones de búsqueda de cláusulas":

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

Use una instrucció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 consultas SQL son un mal "olor de código". El código incorrecto tiene altos "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 me gustarás.

prueba este codigo me funciono

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

Si aceptas, tienes la libertad de dejar una crónica acerca de qué te ha impresionado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *