Ordenação condicional no MySQL
Esses dias encontrei uma consulta com uma penca de JOINs e precisava ordená-la por nome - no entanto, haviam duas colunas que representavam nome (pc.company_name, pi.fullname). Para cada linha, uma dessas colunas seria nula, então seria preciso estabelecer uma condição na cláusula ORDER BY.
Difícil? Não, extremamente fácil.
SELECT *
FROM `table`
ORDER BY
CASE
WHEN 'condição' THEN 'coluna'
WHEN 'condição' THEN 'coluna'
END 'direção'
A consulta final ficou, de forma simplificada, assim:
SELECT *
FROM `table`
ORDER BY
CASE
WHEN `pi`.`fullname` IS NOT NULL THEN `pi`.`fullname`
WHEN `pc`.`company_name` IS NOT NULL THEN `pc`.`company_name`
END ASC
I used to have Disqus enabled on my website, but I have disabled it because of privacy concerns.
If you feel like commenting or asking something, you can still contact me via other means.