Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite HAVING để chỉ định điều kiện lọc cho một nhóm hoặc một tổng hợp.
Giới thiệu về SQLite HAVING mệnh đề
SQLite HAVING mệnh đề là một mệnh đề tùy chọn của SELECT tuyên bố. HAVING mệnh đề chỉ định điều kiện tìm kiếm cho một nhóm.
Bạn thường sử dụng HAVING mệnh đề với GROUP BY mệnh đề. GROUP BY mệnh đề nhóm một tập hợp các hàng thành một tập hợp các hàng hoặc nhóm tóm tắt. Sau đó, HAVING mệnh đề lọc các nhóm dựa trên một điều kiện cụ thể.
Nếu bạn sử dụng HAVING , bạn phải bao gồm GROUP BY mệnh đề; nếu không, bạn sẽ gặp lỗi sau:
Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)
Lưu ý rằng HAVING mệnh đề được áp dụng sau GROUP BY mệnh đề, trong khi WHERE mệnh đề được áp dụng trước GROUP BY mệnh đề.
Phần sau minh họa cú pháp của HAVING mệnh đề:
SELECT
column_1,
column_2,
aggregate_function (column_3)
FROM
table
GROUP BY
column_1,
column_2
HAVING
search_condition;Code language: SQL (Structured Query Language) (sql)
Trong cú pháp này, HAVING mệnh đề đánh giá search_condition cho mỗi nhóm dưới dạng biểu thức Boolean. Nó chỉ bao gồm một nhóm trong tập hợp kết quả cuối cùng nếu đánh giá là đúng.
SQLite HAVING ví dụ mệnh đề
Chúng tôi sẽ sử dụng tracks trong cơ sở dữ liệu mẫu để trình diễn.
Để tìm số lượng bản nhạc cho mỗi album, bạn sử dụng GROUP BY mệnh đề như sau:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Để tìm số lượng bản nhạc cho album có id 1, chúng tôi thêm HAVING mệnh đề cho câu lệnh sau:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1; Hãy thử nó
Chúng tôi đã tham khảo AlbumId trong cột HAVING mệnh đề.
Để tìm các album có số lượng bản nhạc từ 18 đến 20, bạn sử dụng hàm tổng hợp trong HAVING mệnh đề như thể hiện trong câu lệnh sau:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING
COUNT(albumid) BETWEEN 18 AND 20
ORDER BY albumid;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
SQLite HAVING mệnh đề với INNER JOIN ví dụ
Câu lệnh sau truy vấn dữ liệu từ tracks và albums các bảng sử dụng liên kết bên trong để tìm các anbom có tổng thời lượng lớn hơn 60.000.000 mili giây.
SELECT
tracks.AlbumId,
title,
SUM(Milliseconds) AS length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.AlbumId
GROUP BY
tracks.AlbumId
HAVING
length > 60000000;Code language: SQL (Structured Query Language) (sql) Hãy thử nó
Trong hướng dẫn này, bạn đã học cách sử dụng SQLite HAVING để chỉ định điều kiện tìm kiếm cho các nhóm.