Menu
CoddyTech

COALESCE cho giá trị NULL

Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 3 trên 27.

COALESCE trả về đối số đầu tiên không phải là NULL:

COALESCE(nickname, first_name, 'Anonymous')

Đọc từ trái sang phải và dừng ở giá trị khác null đầu tiên. Đây là cách gọn nhất để cung cấp giá trị dự phòng trong truy vấn mà không cần CASE.

Các cách dùng phổ biến:

  • Hiển thị 0 thay vì NULL từ LEFT JOIN: COALESCE(SUM(amount), 0)
  • Chọn trường tùy chọn đầu tiên không rỗng: COALESCE(mobile, home, work)
challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • users: id, display_name, email
  • orders: user_id, amount

Trả về một hàng cho mỗi người dùng, gồm:

  • id
  • label: display_name nếu có, nếu không thì dùng email, nếu không thì dùng 'unknown'
  • total_spent: tổng amount trong đơn hàng của người dùng; người dùng không có đơn hàng thì hiển thị 0 (không phải NULL)

Sắp xếp theo id. Gợi ý: dùng LEFT JOIN từ users sang orders cùng với COALESCE(SUM(...), 0) để xử lý các hàng bị thiếu.

Tự làm thử

SELECT u.id,
       -- label qua COALESCE
       -- total_spent qua COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản

Tự luyện tập: Playground SQL