Liệt kê dữ liệu chỉ có ở bảng table1 mà không có ở bảng table2 trong PostgreSQL

Hướng dẫn cách liệt kê dữ liệu chỉ có ở bảng `table1` mà không có ở bảng `table2` trong PostgreSQL, sử dụng phương pháp `LEFT JOIN` và `WHERE`.

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng PostgreSQL để liệt kê dữ liệu chỉ có ở bảng table1 mà không có ở bảng table2. Chúng ta sẽ sử dụng LEFT JOIN kết hợp với điều kiện WHERE để thực hiện các truy vấn cần thiết.

Mã SQL:

-- Giả sử chúng ta có hai bảng: 'table1' và 'table2'

-- Dữ liệu trong bảng 'table1'
CREATE TABLE table1 (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO table1 (name) VALUES
('Alice'),
('Bob'),
('Charlie');

-- Dữ liệu trong bảng 'table2'
CREATE TABLE table2 (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100)
);

INSERT INTO table2 (name) VALUES
('Alice'),
('David');

-- Truy vấn để liệt kê dữ liệu chỉ có ở table1
SELECT table1.id, table1.name
FROM table1
LEFT JOIN table2 ON table1.name = table2.name
WHERE table2.name IS NULL;

Giải thích chi tiết từng dòng code

  • Tạo bảng table1: Sử dụng CREATE TABLE để tạo bảng table1 với trường idname.
  • Chèn dữ liệu vào bảng table1: Sử dụng INSERT INTO để thêm các bản ghi vào bảng table1.
  • Tạo bảng table2: Tương tự, sử dụng CREATE TABLE để tạo bảng table2.
  • Chèn dữ liệu vào bảng table2: Sử dụng INSERT INTO để thêm các bản ghi vào bảng table2.
  • Truy vấn SELECT:
    • LEFT JOIN: Kết nối bảng table1 với bảng table2 dựa trên trường name. Điều này cho phép chúng ta lấy tất cả các bản ghi từ table1 và chỉ những bản ghi tương ứng từ table2.
    • WHERE table2.name IS NULL: Lọc ra những bản ghi mà không có trong table2, tức là chỉ lấy các bản ghi của table1 mà không có sự trùng khớp trong table2.

Yêu cầu hệ thống:

  • PostgreSQL 9.6 trở lên

Cách cài đặt PostgreSQL:

Có thể cài đặt PostgreSQL từ trang web chính thức PostgreSQL hoặc sử dụng các công cụ quản lý như pgAdmin.

Lời khuyên:

  • Nên tạo chỉ mục trên các trường được sử dụng trong truy vấn để tăng tốc độ truy vấn.
  • Sử dụng LEFT JOIN để lấy tất cả các bản ghi từ bảng chính và lọc các bản ghi không có trong bảng phụ.
Tags: PostgreSQL


Các Hướng Dẫn Cùng Chủ Đề Đang Xem


Đã thêm vào giỏ hàng