同じ列データがクエリされ、1 つの列だけが異なる複数の行がある場合に、フェッチする行の優先順位を付ける方法は?
たとえば、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;
結果が 1 つの行のみになる他の emp_id があり、時にはis_primary
='No' の値を選択する必要があります (他の選択肢はis_primary
ありません)。唯一選ばれる。