Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite SELECT DISTINCT mệnh đề để loại bỏ các hàng trùng lặp trong tập kết quả.
Giới thiệu về SQLite SELECT DISTINCT mệnh đề
DISTINCT mệnh đề là một mệnh đề tùy chọn của SELECT tuyên bố. DISTINCT mệnh đề cho phép bạn loại bỏ các hàng trùng lặp trong tập kết quả.
Câu lệnh sau minh họa cú pháp của DISTINCT mệnh đề:
SELECT DISTINCT select_list
FROM table;Code language: SQL (Structured Query Language) (sql) Trong cú pháp này:
- Đầu tiên,
DISTINCTmệnh đề phải xuất hiện ngay sauSELECTtừ khóa. - Thứ hai, bạn đặt một cột hoặc danh sách các cột sau
DISTINCTtừ khóa. Nếu bạn sử dụng một cột, SQLite sử dụng các giá trị trong cột đó để đánh giá trùng lặp. Trong trường hợp bạn sử dụng nhiều cột, SQLite sử dụng kết hợp các giá trị trong các cột này để đánh giá trùng lặp.
SQLite coi NULL các giá trị trùng lặp. Nếu bạn sử dụng DISTINCT mệnh đề với một cột có NULL giá trị, SQLite sẽ giữ một hàng của NULL giá trị.
Theo lý thuyết cơ sở dữ liệu, nếu một cột chứa NULL giá trị, điều đó có nghĩa là chúng tôi không có thông tin về cột bản ghi cụ thể đó hoặc thông tin không áp dụng được.
Ví dụ:nếu khách hàng có số điện thoại với NULL giá trị, điều đó có nghĩa là chúng tôi không có thông tin về số điện thoại của khách hàng tại thời điểm ghi lại thông tin khách hàng hoặc khách hàng có thể hoàn toàn không có số điện thoại.
SQLite SELECT DISTINCT ví dụ
Chúng tôi sẽ sử dụng customers trong cơ sở dữ liệu mẫu để trình diễn.
Giả sử bạn muốn biết các thành phố nơi khách hàng định vị, bạn có thể sử dụng SELECT câu lệnh để lấy dữ liệu từ city cột của customers bảng như sau:
SELECT city
FROM customers
ORDER BY city;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Nó trả về 59 hàng. Có một số hàng trùng lặp như Berlin London và Mountain View Để xóa các hàng trùng lặp này, bạn sử dụng DISTINCT mệnh đề như sau:
SELECT DISTINCT city
FROM customers
ORDER BY city;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Nó trả về 53 hàng vì DISTINCT mệnh đề đã loại bỏ 6 hàng trùng lặp.
SQLite SELECT DISTINCT trên nhiều cột
Câu lệnh sau đây tìm các thành phố và quốc gia của tất cả khách hàng.
SELECT
city,
country
FROM
customers
ORDER BY
country;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Tập hợp kết quả chứa thành phố và quốc gia trùng lặp, ví dụ:Sao Paulo ở Brazil như được hiển thị trong ảnh chụp màn hình ở trên.
Để xóa thành phố và quốc gia trùng lặp, bạn áp dụng DISTINCT cho cả cột thành phố và quốc gia như được hiển thị trong truy vấn sau:
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;Code language: SQL (Structured Query Language) (sql) Đây là kết quả một phần:
Như đã đề cập trước đó, SQLite sử dụng kết hợp thành phố và quốc gia để đánh giá bản sao.
SQLite SELECT DISTINCT với NULL ví dụ
Câu lệnh này trả về tên của các công ty của khách hàng từ customers bảng.
SELECT company
FROM customers;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Nó trả về 59 hàng với nhiều NULL giá trị.
Bây giờ, nếu bạn áp dụng DISTINCT mệnh đề cho câu lệnh, nó sẽ chỉ giữ một hàng có NULL giá trị.
Xem tuyên bố sau:
SELECT DISTINCT company
FROM customers;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Câu lệnh trả về 11 hàng với một NULL giá trị.
Lưu ý rằng nếu bạn chọn một danh sách các cột từ một bảng và muốn nhận được sự kết hợp duy nhất của một số cột, bạn có thể sử dụng GROUP BY mệnh đề.
Trong hướng dẫn này, bạn đã học cách xóa các hàng trùng lặp khỏi tập kết quả bằng cách sử dụng SQLite SELECT DISTINCT mệnh đề.