当查询多行的同一列数据仅在一列不同时,如何确定要获取的行的优先级?
例如is_primary
列是优先级的基础:
--------------------------------
emp_id | position | is_primary |
--------------------------------
00001 | 1 | Yes |
--------------------------------
00001 | 2 | No |
--------------------------------
说添加条件 WHERE is_primary='Yes' 可能很容易,但我想要的是当且仅当 emp_id 多次出现时才选择主要位置。
这是我的查询,有时会显示错误的员工职位:
SELECT a.emp_id, employee.getEmpName(a.emp_id) as full_name, b.position
FROM `employee.info` a LEFT JOIN `employee.positions` b on b.emp_id=a.emp_id
WHERE a.status!='Resigned'
GROUP BY a.emp_id
ORDER BY position,full_name;
还有其他 emp_id 只会导致一行,有时is_primary
应该选择 ='No' 的值(没有其他选择),但是当 emp_id 出现在分别具有is_primary
= Yes 和 No 的两行时,Yes 应该唯一被选中的。