Все, что имеет логическое значение (истина или ложь), может перейти в условие WHEN
оператора CASE
.Таким образом, вы можете заменить 'r'
на:
('r' AND table1.name='jones')
Если подумать об этом больше, вам, возможно, придется потерять table1.event
после CASE
SELECT table1.id, table1.name,
CASE
WHEN (table1.event = 'r' AND table1.name='Jones') THEN 'very high'
WHEN table1.event = 't' THEN 'very low'
ELSE (SELECT table2.risk
FROM table2
WHERE table2.value <= table1.value
ORDER BY table2.value DESC LIMIT 1)
END AS risk
FROM table1
ORDER BY FIELD( table1.event, 'r', 'f', 't' ), table1.value DESC