我只需要从employee_leaves
表中为每个雇员提取一条记录(employee_id
),但前提是status_id
等于以下数字之一:7, 4, 3
(按优先级写入)。当未找到status_id=7
的行时,应查找status_id=4
的行。当未找到时,应查找status_id=3
的行。
示例:应返回id=4的行
| 身份证|雇员标识|状态标识|
| --------------|--------------|--------------|
| 1|七|1|
| 二|七|二|
| 三|七|四|
| 四|七|七|
| 九|七|三|
| 二十七|七|七|
1条答案
按热度按时间iyfjxgzm1#
首先过滤每个
employee_id
的行,以获得所需的status_id
。然后,通过应用所需的优先级,使用
ROW_NUMBER()
窗口函数对行进行排名。最后从每个排名中选择第一行:
ROW_NUMBER()
中的ORDER BY
子句可以通过使用函数FIELD()
来简化:或者函数
FIND_IN_SET()
:请参见demo。