在本教學中,您將學習如何使用MySQL IF語句來根據條件執行一個SQL代碼塊。
MySQL IF語句允許您根據運算式的某個條件或值結果來執行一組SQL語句。 要在MySQL中形成一個運算式,可以結合文字,變數,運算符,甚至函數來組合。運算式可以返回TRUE,FALSE或NULL,這三個值之一。
請注意,有一個IF函數與本教學中指定的
IF語句是不同的。
MySQL IF語句語法
下麵說明了IF語句的語法:
IF expression THEN
statements;
END IF;
如果運算式(expression)計算結果為TRUE,那麼將執行statements語句,否則控制流將傳遞到END IF之後的下一個語句。
以下流程圖演示了IF語句的執行過程:

MySQL IF ELSE語句
如果運算式計算結果為FALSE時執行語句,請使用IF ELSE語句,如下所示:
IF expression THEN
statements;
ELSE
else-statements;
END IF;
以下流程圖說明了IF ELSE語句的執行過程:

MySQL IF ELSEIF ELSE語句
如果要基於多個運算式有條件地執行語句,則使用IF ELSEIF ELSE語句如下:
IF expression THEN
statements;
ELSEIF elseif-expression THEN
elseif-statements;
...
ELSE
else-statements;
END IF;
如果運算式(expression)求值為TRUE,則IF分支中的語句(statements)將執行;如果運算式求值為FALSE,則如果elseif_expression的計算結果為TRUE,MySQL將執行elseif-expression,否則執行ELSE分支中的else-statements語句。具體流程如下 -

MySQL IF語句示例
以下示例說明如何使用IF ESLEIF ELSE語句,GetCustomerLevel()存儲過程接受客戶編號和客戶級別的兩個參數。
首先,它從customers表中獲得信用額度
然後,根據信用額度,它決定客戶級別:PLATINUM , GOLD 和 SILVER 。
參數p_customerlevel存儲客戶的級別,並由調用程式使用。
USE zaixiandb;
DELIMITER $$
CREATE PROCEDURE GetCustomerLevel(
in p_customerNumber int(11),
out p_customerLevel varchar(10))
BEGIN
DECLARE creditlim double;
SELECT creditlimit INTO creditlim
FROM customers
WHERE customerNumber = p_customerNumber;
IF creditlim > 50000 THEN
SET p_customerLevel = 'PLATINUM';
ELSEIF (creditlim <= 50000 AND creditlim >= 10000) THEN
SET p_customerLevel = 'GOLD';
ELSEIF creditlim < 10000 THEN
SET p_customerLevel = 'SILVER';
END IF;
END$$
以下流程圖演示了確定客戶級別的邏輯 -

在本教學中,您已經學會了如何使用MySQL IF語句根據條件執行一個SQL代碼塊。
