NULL değerleri bir tablonun sonuna sırala


95

PostgreSQL'de NULL, alanlardaki değerlere sahip satırları seçilen tablonun sonuna kadar sıralamanın bir yolu var mı ?

Sevmek:

SELECT * FROM table ORDER BY somevalue, PUT_NULL_TO_END

Yanıtlar:


171

Her şeyden önce, NULL değerler en son varsayılan artan düzende sıralanır. Fazladan bir şey yapmanıza gerek yok.

Sorun , mükemmel ters olan azalan sıra için geçerlidir ve bu nedenle önce NULL değerleri sıralar. Solüsyon @Mosty sivri dışarı ile tanıtıldı PostgreSQL 8.3 :

ORDER BY somevalue DESC NULLS LAST

İçin PostgreSQL 8.2 ve yerini alabilir bu standart SQL özelliği olmayan eski veya diğer RDBMS:

ORDER BY (somevalue IS NULL), somevalue DESC

FALSEdaha önce sıralar TRUE, böylece yukarıdaki örnekte olduğu gibi NULL değerler en son gelir.

İlgili sonraki cevap:


2
IMHO gerçek dünya uygulamalarının çoğunda, sıra ne olursa olsun boş değerlerin sürmesini istersiniz. Örneğin DESC'i isteğe bağlı bir zaman damgası, ad, soyad, ... üzerinde sıralamak, matematiksel olarak DESC sırasının ASC'nin tersi olması mantıklı görünse de gerçekten şüpheli buluyorum. Belki de boş değerler sadece kendi kategorilerinde olmalı ve ASC, DESC'den etkilenmemeli ve her zaman en sonda konulmalı, bu daha iyi bir varsayılan olurdu.
Christophe Roussy

DESC iseler dizinleri etkileyebilir belki bununla ilgili bir not da ekleyebilirsiniz? postgresql.org/message-id/…
Christophe Roussy

@ChristopheRoussy: Sıralama düzeniyle eşleşen dizinler yukarıdaki bağlantılı yanıtta dokunulur.
Erwin Brandstetter

3
Kişisel olarak, varsayılanın tersi olması gerektiğini düşünüyorum: NULL'lar önce artan sırada ve sonuncusu azalan sırada gelir. NULL "en küçük" değer olduğu için bu çok daha sezgiseldir.
Stephen

1
MYSQL'den gelen insanlar için bu bir lol mi? Neden ilk etapta böyle inşa edildi? VEYA Mysql, sonucu optimize etmekten çok daha fazlasını yaptı
CodeGuru

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.