表達IFNULL(CL.EmploymentType, 3)
的基本含義:如果CL.EmploymentType IS NULL
則改爲使用3
。如果它不是NULL
,則使用原始值CL.EmploymentType
。
如果我正確理解您的問題,您需要選擇列CL.EmploymentType
中具有NULL
或3
的行。
查詢是:
SELECT (@v:=2) AS Row, CL.LeaveTypeId, CL.NumberOfLeave
FROM `CompanyLeave` CL
WHERE IFNULL(CL.EmploymentType, 3) = 3;
更新:
如果只有一個行必須返回(具有3
一個優選於那些具有NULL
),則行必須使用標準來排序該將NOT NULL
值放在前面並且必須添加LIMIT 1
子句。
MySQL的documentation about NULL
說:
在做一個ORDER BY
,如果你這樣做ORDER BY ... ASC
NULL
值首先提出並最後,如果你做ORDER BY ... DESC
。
更新查詢:
SELECT (@v:=2) AS Row, CL.LeaveTypeId, CL.NumberOfLeave
FROM `CompanyLeave` CL
WHERE IFNULL(CL.EmploymentType, 3) = 3;
ORDER BY CL.EmploymentType DESC
LIMIT 1
你是什麼意思與'返回的東西else'? – BendEg
請編輯您的問題樣本數據和所需的結果。 –
你的代碼是正確的,應該可以工作。 –