Metin sütunları için özel öncelikler kullanarak ORDER BY


12

Bu örnek bir tablodur:

name | cat
----------
hugo | sal
bob  | mgr
mike | dev
jeff | mgr
john | dev

Hem nameve catvarlık varchar.

cat bu adlar için bir kategori yansıtır, ancak bunlara bir öncelik atamayı ve ardından hepsini listelemek için bu önceliğe göre sıralanmış bir sorgu atamak istiyorum.

Hangi yollar mümkün? Ben ayıklamak olabilir cat, ikinci bir tabloya yabancı anahtar vb inşa Ama benim app çok basittir verilen ve yapı dışı değişken de olabilir: olasılıklar ben listelemek için Neler var mgrtakiben, ilk adları devardından isimlerin salisimlerin ?

Yanıtlar:


20

Yapınızı değiştiremeyeceğinizi varsayarsanız, ORDER BY ürününüzde bir CASE deyimi kullanabilirsiniz:

ORDER BY case cat when 'mgr' then 1 when 'dev' then 2 else 3

Eğer varsa olabilir sizin yapısını değiştirmek, ancak, bir oluşturabilir Categorykategori kodu ve bir sıralama da dahil tablo, sizin örnek tablo katılmak Categorymasa ve sıralama bu sıralama ile.


3
ORDER BY (case when `cat` = 'mgr' then 1 
when `cat` = 'dev' then 2 
else 3 end)

Bu yapı Wordpress'te bana yardım ediyor. Örnek ilk theh diğer özel mesajları seçmek için için: afiş ve proje özel SEÇ edilir post_typeDAN wp_postsSİPARİŞ BY (vaka zaman post_type= 'afişi' sonra 1 iken post_type= 'projesi' sonra 2 başka 3 bitiş)


A) köşeli parantezlerin isteğe bağlı olduğuna dikkat edin: bir case ifade (bunun adı verilir) bir sütunun belirtilebildiği her yerde geçerlidir; ve b) ifade biraz basitleştirilebilircase `cat` when 'mgr' then 1 when 'dev' then 2 else 3 end
Colin 't Hart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.