Bạn cũng có thể ĐẶT HÀNG THEO hai hoặc nhiều cột để tạo ra một sắp xếp lồng nhau. Giá trị mặc định vẫn tăng dần và cột được liệt kê đầu tiên trong mệnh đề ORDER BY sẽ được ưu tiên
Truy vấn sau đây và kết quả truy vấn tương ứng hiển thị các loại lồng nhau. Để sửa đổi thứ tự hiển thị dữ liệu đã chọn, hãy thay đổi thứ tự của hai cột được đặt tên trong mệnh đề ORDER BY
Hình 1. Truy vấn
SELECT stock_num, manu_code, description, unit_price
FROM stock
ORDER BY manu_code, unit_price;
Trong kết quả truy vấn, dữ liệu cột mã_manu xuất hiện theo thứ tự bảng chữ cái và trong mỗi tập hợp hàng có cùng mã_manu [ví dụ: ANZ, HRO], đơn_giá được liệt kê theo thứ tự tăng dần
Hình 2. Kết quả truy vấn ____1_______
Truy vấn sau hiển thị thứ tự đảo ngược của các cột trong mệnh đề ORDER BY
Hình 3. Truy vấn ______2_______
Trong kết quả truy vấn, dữ liệu xuất hiện theo thứ tự tăng dần của unit_price và, trong đó hai hoặc nhiều hàng có cùng unit_price [ví dụ: $20. 00, $48. 00, $312. 00], manu_code theo thứ tự bảng chữ cái
Hình 4. Kết quả truy vấn ______3_______
Thứ tự của các cột trong mệnh đề ORDER BY rất quan trọng và vị trí của từ khóa DESC cũng vậy. Mặc dù các câu lệnh trong truy vấn sau chứa các thành phần giống nhau trong mệnh đề ORDER BY, mỗi câu lệnh tạo ra một kết quả khác [không hiển thị]
Hình 5. Truy vấn ______4_______
Thứ tự SQL theo trường hợp có thể được sử dụng khi chúng ta phải sắp xếp dữ liệu trên cơ sở có điều kiện và xác định tiêu chí mà việc sắp xếp sẽ được thực hiện dựa trên một điều kiện nhất định. Mệnh đề order by có thể hữu ích cho việc sắp xếp dữ liệu theo cách tăng dần hoặc giảm dần bằng cách chỉ định cột mà việc sắp xếp sẽ được thực hiện hoặc nhiều cột nếu việc sắp xếp được thực hiện khi xem xét từng cột một. Nhưng trong trường hợp nếu tiêu chí sắp xếp là cột mà việc sắp xếp được thực hiện cần được chỉ định một cách động và cột được xem xét để sắp xếp sẽ được quyết định trong quá trình thực hiện câu lệnh truy vấn. Đối với điều này, câu lệnh tình huống có thể được sử dụng bên trong mệnh đề theo thứ tự
Gói khoa học dữ liệu tất cả trong một[360+ khóa học, hơn 50 dự án]
Giá bán
Xem các khóa học
Hơn 360 khóa học trực tuyến. hơn 50 dự án. Hơn 1500 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập trọn đời
4. 7 [85,871 xếp hạng]
Trong bài viết này, chúng ta sẽ nghiên cứu cú pháp xác định mệnh đề order by một cách linh hoạt bằng cách sử dụng câu lệnh case, nghiên cứu cách hoạt động của nó và triển khai một số ví dụ về order by with case
Bắt đầu khóa học khoa học dữ liệu miễn phí của bạn
Hadoop, Khoa học dữ liệu, Thống kê và những thứ khác
cú pháp
SELECT
column1, column2,..., columnm
FROM
target_table
WHERE
conditions_or_constraints
ORDER BY CASE WHEN condition1 THEN columni ELSE [CASE WHEN condition2 THEN columni ELSE...] END;
Cú pháp của mệnh đề ORDER BY cùng với câu lệnh tình huống như hình trên. Đây là mệnh đề tùy chọn được sử dụng trong mệnh đề select bất cứ khi nào chúng ta cần truy xuất tập kết quả chứa nhiều giá trị cột. Nó phải luôn được đặt sau mệnh đề FROM và WHERE trong mệnh đề SELECT. Một số thuật ngữ được sử dụng trong cú pháp trên được giải thích bên dưới –
- cột1, cột2,…, cộtm – Đây là tên của các cột của bảng target_table cần truy xuất và tìm nạp trong tập kết quả
- target_table – Tên của bảng nơi kết quả sẽ được tìm nạp
- điều kiện_hoặc_ràng buộc – Nếu bạn muốn áp dụng một số điều kiện nhất định trên một số cột nhất định, chúng có thể được đề cập trong mệnh đề WHERE tùy chọn
- CASE WHEN condition1 THEN columni ELSE [CASE WHEN condition2 THEN columni ELSE…] – câu lệnh case có thể được sử dụng theo thứ tự từng mệnh đề trên cơ sở tùy chọn để cung cấp cơ sở để sắp xếp thứ tự trên cột một cách linh hoạt. Nhiều báo cáo trường hợp lồng nhau cũng có thể được sử dụng. Trong đó, nếu điều kiện đánh giá là đúng thì tên cột được chỉ định sau then được lấy làm tiêu chí sắp xếp khác nếu điều kiện đánh giá là sai thì tên cột hoặc câu lệnh case được đề cập sau other được coi là tiêu chí tính toán để lấy cột
Ví dụ về ĐẶT HÀNG SQL THEO TRƯỜNG HỢP
Chúng ta hãy xem xét một bảng tên nhà phát triển và kiểm tra nội dung của nó bằng truy vấn sau. Sau khi truy xuất các bản ghi của bảng nhà phát triển bằng truy vấn CHỌN bên dưới –
SELECT * FROM developers;
đưa ra đầu ra sau -
Bây giờ, giả sử rằng trong các nội dung trên của bảng nhà phát triển, chúng tôi muốn lấy tập kết quả chứa tất cả các cột của bảng nhà phát triển và được sắp xếp theo tên của nhà phát triển. Ngoài ra, chúng tôi phải đảm bảo rằng tên của quản trị viên sẽ được truy xuất trước và sau đó tất cả mệnh đề sắp xếp theo tên sẽ có hiệu lực
Đối với điều này, chúng ta có thể sử dụng câu lệnh tình huống bên trong đơn đặt hàng bằng một mệnh đề xác định rằng nếu vị trí của nhà phát triển là Quản trị viên thì hãy giữ vị trí đó với thứ tự 0 bởi đó là giá trị nhỏ nhất khiến nó đến trong bản ghi đầu tiên khác
Hơn nữa, khi điều này được thực hiện, bản ghi của quản trị viên sẽ được truy xuất trước và sau đó là các bản ghi còn lại. Bây giờ, tiêu chí thứ hai trong cùng thứ tự theo mệnh đề sẽ là cột tên vì chúng ta phải truy xuất tất cả các bản ghi được sắp xếp theo thứ tự bảng chữ cái tên của chúng. Do đó, câu lệnh truy vấn của chúng ta sẽ như hình bên dưới với câu lệnh trường hợp được chỉ định theo thứ tự và sau khi đặt hàng của quản trị viên và các nhà phát triển khác, các nhà phát triển còn lại sẽ được sắp xếp theo tên của họ
SELECT
*
FROM
`developers`
ORDER BY CASE WHEN POSITION="Administrator" THEN 0
ELSE 1 END, NAME;
Đầu ra của việc thực hiện câu lệnh truy vấn trên sẽ như sau bao gồm bản ghi của quản trị viên ở vị trí đầu tiên và sau đó các nhà phát triển còn lại được sắp xếp theo tên của họ –
Chúng ta có thể sử dụng câu lệnh CASE theo thứ tự theo mệnh đề thường khi chúng ta phải tách biệt các bản ghi nhất định và xác định thứ tự của chúng trước hoặc sau khi sắp xếp thông thường trên cột. Hầu hết các trường hợp này phát sinh trong trường hợp xử lý giá trị NULL, giá trị trống và hiển thị các bản ghi đó ở cuối bản ghi không null hoặc không trống
Bây giờ, chúng ta sẽ xem xét bảng có tên educba_writers có nội dung và cấu trúc như được hiển thị bằng cách sử dụng đầu ra câu lệnh truy vấn chọn bên dưới –
________số 8_______
Đầu ra của việc thực hiện câu lệnh truy vấn trên sẽ như sau –
Bây giờ, chúng ta phải sắp xếp tập kết quả trên cơ sở nội dung của cột nối ngày và giờ. Nếu chúng ta làm điều đó bằng cách sử dụng mệnh đề order by đơn giản như được đề cập trong truy vấn bên dưới, tập kết quả sẽ như sau –
SELECT
*
FROM
`educba_writers`
ORDER BY `joining_date_time` ;
Đầu ra của việc thực hiện câu lệnh truy vấn trên sẽ như sau –
Tuy nhiên, nếu chúng ta phải sắp xếp tập kết quả sao cho tất cả các giá trị null sẽ ở cuối và các giá trị ngày và giờ tham gia được sắp xếp ở đầu thì chúng ta có thể sử dụng câu lệnh case trong truy vấn select như bên dưới –
SELECT
*
FROM
`educba_writers`
ORDER BY
CASE
WHEN `joining_date_time` IS NULL
THEN 1
ELSE 0
END,
joining_date_time ;
Đầu ra của việc thực hiện câu lệnh truy vấn trên sẽ như sau –
Phần kết luận
Chúng ta có thể sử dụng câu lệnh CASE bên trong câu lệnh ORDER BY để xác định thứ tự của các cột nhất định theo cách dự kiến nhất định theo yêu cầu và sau đó sắp xếp thứ tự các bản ghi còn lại như bình thường trên một số tham số khác hoặc giữ nguyên như vậy. Hành vi động xác định thứ tự của các bản ghi nhất định thỏa mãn các điều kiện nhất định chỉ có thể được thực hiện bằng cách sử dụng câu lệnh tình huống bên trong mệnh đề order by của câu lệnh truy vấn chọn và đề cập đến các điều kiện trong câu lệnh tình huống tương ứng
Bài viết được đề xuất
Đây là hướng dẫn về ĐẶT HÀNG SQL THEO TRƯỜNG HỢP. Ở đây chúng tôi thảo luận về Giới thiệu, cú pháp và ví dụ với việc triển khai mã tương ứng. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –