该表达式的IFNULL(CL.EmploymentType, 3)
基本意思是:if CL.EmploymentType IS NULL
then use 3
instead。CL.EmploymentType
如果不是,则使用 的原始值NULL
。
如果我正确理解您的问题,您需要选择具有NULL
或3
列的行CL.EmploymentType
。
查询是:
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的文档NULL
说:
执行时,如果您执行ORDER BY
,NULL
则首先显示值,如果执行ORDER BY ... ASC
,则最后显示值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