Menu
CoddyTech

Đơn giản hóa truy vấn với từ khóa WITH

Bài học 2 trên 13 trong khóa học SQL nâng cao của Coddy.

Các truy vấn có thể trở nên quá phức tạp khi thêm nhiều truy vấn con bên trong. Ví dụ, đây là một truy vấn có nhiều truy vấn con:

SELECT * FROM table1
WHERE col2 IN (
	SELECT col1 FROM table2
	WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
		SELECT col5 FROM table3
		WHERE col1 AND col3 OR col2
	)
)

Để mọi thứ đơn giản hơn, ta có thể dùng từ khóa WITH query_name AS (...). Từ khóa này cho phép lưu một truy vấn với một tên và dùng truy vấn đó ở bất cứ đâu ta muốn:

WITH query1 AS (
	SELECT col5 FROM table3
	WHERE col1 AND col3 OR col2
), query2 AS (
	SELECT col1 FROM table2
	WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN query2 AND col4 IN query1

Ở đây, ta dùng lại query1 trong query2 và trong truy vấn chính.

challenge icon

Thử thách

Dễ

Chất lượng của thiết bị được đo bằng (width/height)*num_features.

Chúng ta muốn tìm tất cả thiết bị bị đánh giá thấp. Lấy tất cả thiết bị có opinion lớn hơn chất lượng trung bình và có score thấp hơn chất lượng trung bình.

Để giải bài này, hãy dùng mệnh đề WITH để tạo truy vấn con tính chất lượng trung bình, rồi dùng lại truy vấn đó trong truy vấn chính.

Tự làm thử

Tất cả bài học trong SQL nâng cao

Tự luyện tập: Trình biên dịch Python online