Thứ Tư, 4 tháng 11, 2015

SQL Order By (Sắp xếp bởi)


Việc query dữ liệu cho một tập kết quả, mà có thể nó sắp xếp không như ý muốn, sử dụng Order by để sắp xếp kết quả trả về.
-- Cú pháp
 
SELECT "column_name"
FROM "table_name"
[WHERE "condition"]
ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC];
 
-- Ghi chú:
-- ASC: nghĩa là sắp xếp tăng dần (Mặc định)
-- DESC: Nghĩa là sắp xếp giảm dần.
Ví dụ:
-- Sắp xếp ưu tiên Product_Type_Cd tăng dần
-- Sau đó mới tới Name (Cũng tăng dần)
Select Pro.Product_Cd
     ,Pro.Product_Type_Cd
     ,Pro.Name
From   Product Pro
Order  By Pro.Product_Type_Cd Asc
        ,Pro.Name            Asc;
        
        
-- Trong Order BY, ASC là mặc định.
-- Vì vậy có thể ko cần viết ASC.
Select Pro.Product_Cd
     ,Pro.Product_Type_Cd
     ,Pro.Name
From   Product Pro
Order  By Pro.Product_Type_Cd
        ,Pro.Name;
 
-- Sắp xếp ưu tiên Product_Type_Cd giảm dần
-- Sau đó mới tới Name (Tăng dần)
Select Pro.Product_Cd
     ,Pro.Product_Type_Cd
     ,Pro.Name
From   Product Pro
Order  By Pro.Product_Type_Cd Desc
        ,Pro.Name            Asc;

Kết quả chạy ví dụ:
Order By bao giờ cũng đứng sau where.
-- Tìm các nhân viên có tên bắt đầu bởi S.
-- Sắp xếp giảm dần theo ngày bắt đầu vào làm việc.
Select Emp.Emp_Id
     ,Emp.First_Name
     ,Emp.Last_Name
     ,Emp.Start_Date
From   Employee Emp
Where  Emp.First_Name Like 'S%'
Order  By Emp.Start_Date Desc;
Kết quả chạy câu lệnh:
Cú pháp SQLServer: (Không phải là tiêu chuẩn của SQL, do vậy có thể không được hỗ trợ bởi Database khác)

-- Đây là cú pháp của SQLServer(Có thể không được hỗ trợ bởi Database khác).
-- Sử dụng thứ tự của cột vào trong câu Order by.
-- First_Name là cột thứ 2 trong câu Select
-- Có thể sử dụng: Order by 2 thay cho Order by First_Name.
Select Emp.Emp_Id
    ,Emp.First_Name
    ,Emp.Last_Name
    ,Emp.Start_Date
From   Employee Emp
Order  By 2 Desc;

Không có nhận xét nào:

Đăng nhận xét

Cám ơn bạn đã quan tâm đến bài viết của mình nhé!