Menu
CoddyTech

CASE trong ORDER BY

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 2 trên 27.

CASE không chỉ dùng cho SELECT. Bạn có thể đặt nó bên trong ORDER BY để sắp xếp các hàng theo quy tắc tùy chỉnh mà chỉ các cột thôi không thể thể hiện.

SELECT name, status
FROM tickets
ORDER BY
    CASE status
        WHEN 'urgent' THEN 1
        WHEN 'high'   THEN 2
        WHEN 'normal' THEN 3
        ELSE 4
    END

Hãy chú ý dạng viết ngắn hơn: CASE column WHEN value THEN .... Dạng này tương đương với WHEN column = value. Hãy dùng cách nào dễ đọc hơn.

challenge icon

Thử thách

Dễ

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

  • tasks: id, title, priority

Trả về title và priority, sắp xếp sao cho 'critical' đứng đầu, tiếp theo là 'high', rồi đến 'low', các giá trị khác đứng cuối. Với cùng mức độ ưu tiên, hãy sắp xếp theo thứ tự bảng chữ cái của title.

Tự làm thử

SELECT title, priority
FROM tasks
ORDER BY
    -- Thay phần sắp xếp tạm bên dưới bằng một biểu thức CASE để
    -- xếp hạng các hàng theo yêu cầu của bài, rồi sắp xếp các hàng cùng hạng theo thứ tự bảng chữ cái
    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