Using an IF Statement in a MySQL SELECT query

前端 未结 3 1882
无人及你
无人及你 2020-11-27 18:30

I am trying to use an IF statement in a MySQL select query.

I am getting an error after the AND statement where the first IF

3条回答
  •  囚心锁ツ
    2020-11-27 18:54

    How to use an IF statement in the MySQL "select list":

    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
    

    How to use an IF statement in the MySQL where clause search condition list:

    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
    

    How to use an IF statement in the MySQL "having clause search conditions":

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

    Use an IF statement with a column used in the select list to make a decision:

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

    If statements embedded in SQL queries is a bad "code smell". Bad code has high "WTF's per minute" during code review. This is one of those things. If I see this in production with your name on it, I'm going to automatically not like you.

提交回复
热议问题