Select distinct

2020/06/02 Oracle Database Common 1798 words,about 6 minutes

Tóm tắt: Trong bài viết này chúng ta sẽ cùng tìm hiểu về cách để truy vấn lấy ra dữ liệu không bị trùng lặp sử dụng SELECT DISTINCT

1. Tóm tắt lý thuyết

  • DISTINCT được sử dụng trong câu lệnh SELECT dùng để lọc các giá trị trùng nhau trong kết quả truy vấn. Điều này đảm bảo rằng các giá trị trả về là duy nhất
  • Cú pháp của SELECT DISTINCT sẽ như sau:
SELECT DISTINCT column_1 FROM table_name;
  • Trong câu truy vấn này dữ liệu trong cột column_1 sẽ được so sánh để lọc bỏ giá trị trùng.

  • Bạn cũng có thể SELECT DISTINCT trên nhiều cột:

SELECT DISTINCT 
    column_1,
    column_2,
    column_3
FROM table_name;
  • Khi đó dữ liệu trong cả ba cột column_1, column_2, column_3 sẽ được kết hợp và so sánh để lọc bỏ giá trị trùng. Điều đó có nghĩa là 2 bản ghi được xem là trùng lặp khi và chỉ khi cả 3 cột column_1, column_2column_3 có giá trị giống nhau.

2. Ví dụ

a) SELECT DISTINCT trên một cột
  • Chúng ta hãy xem xét bảng contacts
CONTACTS
CONTACT_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE
CUSTOMER_ID
  • Câu truy vấn sau sẽ lấy ra tất cả các first_name
SELECT
    first_name
FROM
    contacts
ORDER BY
    first_name;
  • Khi đó sẽ được kết quả 319 bản ghi

anh

  • Còn khi thực hiện SELECT DISTINCT
SELECT DISTINCT
    first_name
FROM
    contacts
ORDER BY
    first_name;
  • Sẽ được kết quả sau với 302 bản ghi có nghĩa là đã có 17 bản ghi bị trùng lặp đã bị loại bỏ

anh

a) SELECT DISTINCT trên nhiều cột
  • Chúng ta hãy xem xét bảng order_items
ORDER_ITEMS
ITEM_ID
PRODUCT_ID
QUANTITY
UNIT_PRICE
  • Chúng ta sẽ lấy giá trị của product_idquantity

  • Truy vấn không distinct:

SELECT
    product_id,
    quantity
FROM 
    ORDER_ITEMS
ORDER BY 
    product_id;
  • Kết quả sẽ được 665 bản ghi:

anh

  • Truy vấn sử dụng distinct:
SELECT DISTINCT
    product_id,
    quantity
FROM
    order_items
ORDER BY
    product_id;
  • Kết quả sẽ được 657 bản ghi:

anh

c) SELECT DISTINCT với giá trị NULL
  • Nếu sử dụng SELECT DISTINCT để truy vấn từ cột mà có nhiều giá trị NULL thì kết quả sẽ chỉ bao gồm một giá trị NULL duy nhất.

  • Chúng ta hãy xem bảng locations:

LOCATIONS
LOCATION_ID
ADDRESS
POSTAL_CODE
CITY
STATE
COUNTRY_ID
  • Truy vấn lấy state không distinct
SELECT 
    state 
FROM 
    locations 
ORDER BY 
    state NULLS FIRST;
  • Ta sẽ được kết quả:

anh

  • Truy vấn lấy state sử dụng distinct
SELECT DISTINCT
    state 
FROM 
    locations 
ORDER BY 
    state NULLS FIRST;
  • Ta sẽ được kết quả:

anh

Document Informations

Search

    Table of Contents