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,
DISTINCT
mệnh đề phải xuất hiện ngay sauSELECT
từ khóa. - Thứ hai, bạn đặt một cột hoặc danh sách các cột sau
DISTINCT
từ 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 đề.