SQLite
 sql >> база данни >  >> RDS >> SQLite

SQLite Поръчайте по

Резюме :в този урок ще научите как да сортирате набор от резултати от заявка с помощта на SQLite ORDER BY клауза.

Въведение в SQLite ORDER BY клауза

SQLite съхранява данни в таблиците в неопределен ред. Това означава, че редовете в таблицата може или не може да са в реда, в който са били вмъкнати.

Ако използвате SELECT оператор за заявка на данни от таблица, редът на редовете в резултантния набор не е посочен.

За да сортирате резултантния набор, добавяте ORDER BY клауза към SELECT изявление, както следва:

SELECT
   select_list
FROM
   table
ORDER BY
    column_1 ASC,
    column_2 DESC;Code language: SQL (Structured Query Language) (sql)

ORDER BY клаузата идва след FROM клауза. Позволява ви да сортирате набора от резултати въз основа на една или повече колони във възходящ или низходящ ред.

В този синтаксис поставяте името на колоната, по която искате да сортирате, след ORDER BY клауза, последвана от ASC или DESC ключова дума.

  • ASC ключова дума означава възходящо.
  • И DESC ключова дума означава низходящо.

Ако не посочите ASC или DESC ключова дума, SQLite сортира резултатния набор с помощта на ASC опция. С други думи, сортира набора от резултати във възходящ ред по подразбиране.

В случай, че искате да сортирате резултатния набор по множество колони, използвайте запетая (,), за да разделите две колони. ORDER BY клаузата сортира редове с помощта на колони или изрази отляво надясно. С други думи, ORDER BY клаузата сортира редовете с помощта на първата колона в списъка. След това сортира сортираните редове с помощта на втората колона и т.н.

Можете да сортирате резултатния набор, като използвате колона, която не се появява в списъка за избор на SELECT клауза.

SQLite ORDER BY пример за клауза

Да вземем tracks таблица в примерната база данни за демонстрацията.

Да предположим, че искате да получите данни от колони за име, милисекунди и идентификатор на албум, използвате следното изявление:

SELECT
	name,
	milliseconds, 
        albumid
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Опитайте го

SELECT израз, който не използва ORDER BY клауза връща набор от резултати, който не е в никакъв ред.

Да предположим, че искате да сортирате набора от резултати въз основа на AlbumId колона във възходящ ред, използвате следния израз:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Резултатът сега е сортиран по AlbumId колона във възходящ ред, както е показано на екранната снимка.

SQLite използва ASC по подразбиране, така че можете да го пропуснете в горния израз, както следва:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid;

Опитайте го

Да предположим, че искате да сортирате сортирания резултат (по AlbumId ) по-горе с Milliseconds колона в низходящ ред. В този случай трябва да добавите Milliseconds колона в ORDER BY клауза, както следва:

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	albumid ASC,
        milliseconds DESC;Code language: SQL (Structured Query Language) (sql)

Опитайте го

SQLite сортира редовете по AlbumId колона във възходящ ред първо. След това сортира сортирания набор от резултати по Milliseconds колона в низходящ ред.

Ако погледнете парчетата от албума с AlbumId 1, откривате, че редът на записите се променя между двете изрази.

SQLite ORDER BY с позицията на колоната

Вместо да указвате имената на колоните, можете да използвате позицията на колоната в ORDER BY клауза.

Например, следният израз сортира песните и по albumid (3-та колона) и Milliseconds (2-ра колона) във възходящ ред.

SELECT
	name,
	milliseconds, 
	albumid
FROM
	tracks
ORDER BY
	 3,2;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Числата 3 и 2 се отнасят до AlbumId и Milliseconds в списъка с колони, който се показва в SELECT клауза.

Сортиране на NULL

В света на базата данни NULL е специално. Означава, че информацията липсва или данните не са приложими.

Да предположим, че искате да съхраните рождения ден на художник в таблица. В момента на запазване на записа на изпълнителя нямате информация за рождения ден.

За да представите неизвестната информация за рожден ден в базата данни, можете да използвате специална дата като 01.01.1900 или '' празен низ. И двете стойности обаче не показват ясно, че рождената дата е неизвестна.

NULL е измислено, за да разреши този проблем. Вместо да се използва специална стойност, за да се посочи, че информацията липсва, се използва NULL.

NULL е специално, защото не можете да го сравните с друга стойност. Просто казано, ако двете части са неизвестни, не можете да ги сравнявате.

NULL дори не може да се сравни със себе си; NULL не е равно на себе си, така че NULL = NULL винаги води до false.

Когато става въпрос за сортиране, SQLite счита NULL за по-малка от всяка друга стойност.

Това означава, че NULL ще се появят в началото на набора от резултати, ако използвате ASC или в края на набора от резултати, когато използвате DESC.

SQLite 3.30.0 добави NULLS FIRST и NULLS LAST опции за ORDER BY клауза. NULLS FIRST опция указва, че NULL ще се появят в началото на набора от резултати, докато NULLS LAST опция поставя NULL в края на набора от резултати.

Следващият пример използва ORDER BY клауза за сортиране на песни по композитори:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
   tracks
ORDER BY 
   Composer;Code language: SQL (Structured Query Language) (sql)

Първо, виждате, че NULL се появяват в началото на набора от резултати, защото SQLite ги третира като най-ниските стойности. Когато превъртите надолу резултата, ще видите други стойности:

Следващият пример използва NULLS LAST опция за поставяне на NULL след други стойности:

SELECT 
    TrackId, 
    Name, 
    Composer 
FROM 
    tracks
ORDER BY 
    Composer NULLS LAST;Code language: SQL (Structured Query Language) (sql)

Ако превъртите надолу изхода, ще видите, че NULL се поставят в края на набора от резултати:

В този урок научихте как да използвате SQLite ORDER BY клауза за сортиране на резултатния набор с помощта на една колона, множество колони във възходящ и низходящ ред.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. запишете List<Model class> в sqlite

  2. СЛУЧАЙ SQLite

  3. 2 начина за връщане на юлианския ден в SQLite

  4. Използване на стая DB в проект за библиотека

  5. Форматирайте числа със запетая в SQLite