式IFNULL(CL.EmploymentType, 3)は基本的に次のことを意味CL.EmploymentType IS NULLします3。でない場合は、 の元の値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;
アップデート:
1 つの行のみを返す必要がある場合 ( を持つ行3よりも優先される行)、値を前にNULL置く基準を使用して行を並べ替え、句を追加する必要があります。NOT NULLLIMIT 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