Using an IF Statement in a MySQL SELECT query

前端 未结 3 1864
无人及你
无人及你 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:53

    try this code worked for me

    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
    
    0 讨论(0)
  • 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.

    0 讨论(0)
  • 2020-11-27 19:12

    The IF/THEN/ELSE construct you are using is only valid in stored procedures and functions. Your query will need to be restructured because you can't use the IF() function to control the flow of the WHERE clause like this.

    The IF() function that can be used in queries is primarily meant to be used in the SELECT portion of the query for selecting different data based on certain conditions, not so much to be used in the WHERE portion of the query:

    SELECT IF(JQ.COURSE_ID=0, 'Some Result If True', 'Some Result If False'), OTHER_COLUMNS
    FROM ...
    WHERE ...
    
    0 讨论(0)
提交回复
热议问题