1. 程式人生 > >MYSQL-----流程控制 if() 函式的用法

MYSQL-----流程控制 if() 函式的用法

  語法:IF(condition,result,result)

     如果函式的第一個引數中給定的condition符合條件(如,condition不等於0或者不為NULL),那麼函式的執行結果為第二個引數中給定的result值,反之,如果第一個引數中的condition值確實等於0或者為NULL,該函式將返回第三個引數中給定的result值,注意,condition的值被替換成了整數值,因此,當試圖匹配字串或者浮點值時,請事情比較運算子。

示例:有一張使用者表,裡面有3個欄位,分別是uuid,mobile,age,如何用SQL寫出age=12,age=46,其餘的age歸類均預設等於9的查詢語句

要求:#將此查詢結果進行age的分類統計,預期結果:12是1個,46是1個,其餘的age歸類均預設等於9的是2個#

select uuid,mobile,count(age) as "統計",
if(age=12,12,
  if(age=46,46,9
)
)as age0 from user where mobile="53437569" group by age0;

#注意取as後面的別名,避免取與資料庫中存在欄位名稱相同的命名,否則會導致系統自己都不知道取哪個欄位進行解析,我就犯了這個錯age0之前寫的是age
 
 

 

 

注:《mysql核心技術手冊》中有關這節講解的一個示例,貼上此處供自己後期參考

SELECT clients.client_id AS ID,

CONCAT(name_first, SPACE(1), name_last) AS Client,

telephone_home AS Telephone, SUM(qty) AS Shares,

IF(

  (SELECT SUM(qty * price)

    FROM investments, stock_prices

    WHERE stock_symbol = symbol

    AND client_id = ID )

    > 100000, 'Large', 'Small') AS 'Size'

FROM clients, investments

WHERE stock_symbol = 'GT'

AND clients.client_id = investments.client_id

GROUP BY clients.client_id LIMIT 2;