TransWikia.com

Definir uma ordem especifica na query

Stack Overflow em Português Asked on November 25, 2021

Eu tenho uma query que seleciona todos os membros do grupo por ordem de rank (dono, administrador e membro) e pela data na qual o membro se juntou ao grupo. Pela coluna access_level não ser númerica eu não sei como coloco na ordem de rank.

SELECT * FROM group_memberships WHERE group_id = ? ORDER BY access_level ASC, STR_TO_DATE(date_joined, '%M %Y') ASC LIMIT;

access_level usa o tipo de dados ENUM owner, administrator e member, e é exatamente nesta ordem que quero.

Como posso fazer isto?

2 Answers

Você pode trazer um campo de ordenação Fictício na sua consulta e ordenar por ele.

SELECT IF(access_level="owner",1,IF(access_level = "administrator",2,3))AS Ornedacao
FROM group_memberships ORDER BY Ordenacao

Answered by Diego_F on November 25, 2021

Você pode tentar ordenar com um CASE WHEN

ORDER
   BY CASE WHEN access_level = 'owner' THEN 1 
           WHEN access_level = 'administrator' THEN 2
           WHEN access_level = 'member' THEN 3
       END ASC,
STR_TO_DATE(date_joined, '%M %Y') ASC LIMIT;

Answered by marcos.martins on November 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP