SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Đặt hàng SQLite bởi

Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sắp xếp tập hợp kết quả của một truy vấn bằng cách sử dụng SQLite ORDER BY mệnh đề.

Giới thiệu về SQLite ORDER BY mệnh đề

SQLite lưu trữ dữ liệu trong các bảng theo một thứ tự không xác định. Nó có nghĩa là các hàng trong bảng có thể có hoặc không theo thứ tự mà chúng đã được chèn.

Nếu bạn sử dụng SELECT để truy vấn dữ liệu từ một bảng, thứ tự của các hàng trong tập kết quả là không xác định.

Để sắp xếp tập hợp kết quả, bạn thêm ORDER BY mệnh đề SELECT tuyên bố như sau:

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

ORDER BY mệnh đề đứng sau FROM mệnh đề. Nó cho phép bạn sắp xếp tập hợp kết quả dựa trên một hoặc nhiều cột theo thứ tự tăng dần hoặc giảm dần.

Trong cú pháp này, bạn đặt tên cột mà bạn muốn sắp xếp theo sau ORDER BY theo sau mệnh đề là ASC hoặc DESC từ khóa.

  • ASC từ khóa có nghĩa là tăng dần.
  • DESC từ khóa có nghĩa là giảm dần.

Nếu bạn không chỉ định ASC hoặc DESC từ khóa, SQLite sắp xếp tập hợp kết quả bằng ASC lựa chọn. Nói cách khác, nó sắp xếp kết quả được đặt theo thứ tự tăng dần theo mặc định.

Trong trường hợp bạn muốn sắp xếp tập hợp kết quả theo nhiều cột, bạn sử dụng dấu phẩy (,) để ngăn cách hai cột. ORDER BY mệnh đề sắp xếp các hàng bằng cách sử dụng các cột hoặc biểu thức từ trái sang phải. Nói cách khác, ORDER BY mệnh đề sắp xếp các hàng bằng cách sử dụng cột đầu tiên trong danh sách. Sau đó, nó sắp xếp các hàng đã sắp xếp bằng cách sử dụng cột thứ hai, v.v.

Bạn có thể sắp xếp tập hợp kết quả bằng cách sử dụng một cột không xuất hiện trong danh sách chọn của SELECT mệnh đề.

SQLite ORDER BY ví dụ mệnh đề

Hãy bắt đầu tracks trong cơ sở dữ liệu mẫu cho phần trình diễn.

Giả sử, bạn muốn lấy dữ liệu từ các cột tên, mili giây và id album, bạn sử dụng câu lệnh sau:

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

Hãy thử nó

SELECT câu lệnh không sử dụng ORDER BY mệnh đề trả về một tập kết quả không theo bất kỳ thứ tự nào.

Giả sử bạn muốn sắp xếp tập hợp kết quả dựa trên AlbumId theo thứ tự tăng dần, bạn sử dụng câu lệnh sau:

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

Hãy thử nó

Tập hợp kết quả bây giờ được sắp xếp theo AlbumId theo thứ tự tăng dần như trong ảnh chụp màn hình.

SQLite sử dụng ASC theo mặc định, do đó bạn có thể bỏ qua nó trong câu lệnh trên như sau:

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

Hãy thử nó

Giả sử bạn muốn sắp xếp kết quả đã sắp xếp (theo AlbumId ) trên Milliseconds cột theo thứ tự giảm dần. Trong trường hợp này, bạn cần thêm Milliseconds vào cột ORDER BY mệnh đề như sau:

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

Hãy thử nó

SQLite sắp xếp các hàng theo AlbumId cột theo thứ tự tăng dần trước. Sau đó, nó sắp xếp kết quả được sắp xếp theo Milliseconds theo thứ tự giảm dần.

Nếu bạn xem các bản nhạc của album bằng AlbumId 1, bạn thấy rằng thứ tự các bản nhạc thay đổi giữa hai câu lệnh.

SQLite ORDER BY với vị trí cột

Thay vì chỉ định tên của các cột, bạn có thể sử dụng vị trí của cột trong ORDER BY mệnh đề.

Ví dụ:câu lệnh sau đây sắp xếp các bản nhạc theo cả albumid (Cột thứ 3) và milliseconds (Cột thứ 2) theo thứ tự tăng dần.

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

Hãy thử nó

Số 3 và 2 đề cập đến AlbumIdMilliseconds trong danh sách cột xuất hiện trong SELECT mệnh đề.

Sắp xếp NULL

Trong thế giới cơ sở dữ liệu, NULL là đặc biệt. Nó biểu thị rằng thông tin bị thiếu hoặc dữ liệu không áp dụng được.

Giả sử bạn muốn lưu trữ ngày sinh của một nghệ sĩ trong một bảng. Tại thời điểm lưu bản ghi của nghệ sĩ, bạn không có thông tin ngày sinh.

Để thể hiện thông tin ngày sinh không xác định trong cơ sở dữ liệu, bạn có thể sử dụng một ngày đặc biệt như 01.01.1900 hoặc một '' chuỗi rỗng. Tuy nhiên, cả hai giá trị này đều không cho thấy rõ ràng rằng ngày sinh là không xác định.

NULL đã được phát minh để giải quyết vấn đề này. Thay vì sử dụng một giá trị đặc biệt để chỉ ra rằng thông tin bị thiếu, NULL được sử dụng.

NULL đặc biệt vì bạn không thể so sánh nó với một giá trị khác. Nói một cách đơn giản, nếu hai phần thông tin không xác định, bạn không thể so sánh chúng.

NULL thậm chí không thể được so sánh với chính nó; NULL không bằng chính nó nên NULL = NULL luôn cho kết quả là false.

Khi nói đến sắp xếp, SQLite coi NULL nhỏ hơn bất kỳ giá trị nào khác.

Có nghĩa là NULL sẽ xuất hiện ở đầu tập kết quả nếu bạn sử dụng ASC hoặc ở cuối tập kết quả khi bạn sử dụng DESC.

SQLite 3.30.0 đã thêm NULLS FIRSTNULLS LAST tùy chọn cho ORDER BY mệnh đề. NULLS FIRST tùy chọn chỉ định rằng NULL sẽ xuất hiện ở đầu tập kết quả trong khi NULLS LAST tùy chọn đặt NULL ở cuối tập kết quả.

Ví dụ sau sử dụng ORDER BY mệnh đề sắp xếp các bản nhạc của các nhà soạn nhạc:

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

Đầu tiên, bạn thấy rằng NULL xuất hiện ở đầu tập kết quả vì SQLite coi chúng là giá trị thấp nhất. Khi cuộn xuống kết quả, bạn sẽ thấy các giá trị khác:

Ví dụ sau sử dụng NULLS LAST tùy chọn để đặt NULL sau các giá trị khác:

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

Nếu bạn cuộn đầu ra xuống, bạn sẽ thấy rằng NULL được đặt ở cuối tập kết quả:

Trong hướng dẫn này, bạn đã học cách sử dụng ORDER BY của SQLite mệnh đề sắp xếp tập hợp kết quả bằng cách sử dụng một cột duy nhất, nhiều cột theo thứ tự tăng dần và giảm dần.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android SQLite:Làm thế nào để tạo bảng lớn cho mục đích thử nghiệm?

  2. Các phương pháp hay nhất để làm việc với nhiều bảng

  3. Tại sao chúng ta cần mệnh đề GLOB trong SQLite?

  4. Hàm Like () trong SQLite với các ví dụ

  5. Truy cập cơ sở dữ liệu của một ứng dụng từ một ứng dụng khác