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;