Tôi đang cố gắng sắp xếp theo nhiều cột trong SQL và theo các hướng khác nhau. column1
sẽ được sắp xếp giảm dần, và column2
tăng dần.
Tôi có thể làm cái này như thế nào?
Tôi đang cố gắng sắp xếp theo nhiều cột trong SQL và theo các hướng khác nhau. column1
sẽ được sắp xếp giảm dần, và column2
tăng dần.
Tôi có thể làm cái này như thế nào?
Câu trả lời:
ORDER BY column1 DESC, column2
Điều này sắp xếp mọi thứ theo column1
(giảm dần) trước, và sau đó column2
(tăng dần, là mặc định) bất cứ khi nào các column1
trường cho hai hoặc nhiều hàng bằng nhau.
column1
trước và sau đó column2
bất cứ khi nào các column1
trường cho hai hàng bằng nhau.
column2
và sau đó thực hiện sắp xếp ỔN ĐỊNH theo column1
. Điều này rõ ràng hơn cho những người biết phân loại ổn định là gì.
Các câu trả lời khác thiếu một ví dụ cụ thể, vì vậy ở đây nó đi:
Cho bảng người sau :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Nếu bạn thực hiện truy vấn dưới đây:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Tập kết quả sẽ như thế này:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Có cách nào chúng ta có thể khắc phục điều này không?
FirstName, LastName
các mục trùng lặp khác biệtYearOfBirth
Thứ tự nhiều cột phụ thuộc vào cả hai giá trị tương ứng của cột: Dưới đây là ví dụ bảng của tôi trong đó có hai cột được đặt tên bằng Bảng chữ cái và Số và các giá trị trong hai cột này là thứ tự asc và desc .
Bây giờ tôi thực hiện Order By trong hai cột này bằng cách thực hiện lệnh bên dưới:
Bây giờ một lần nữa tôi chèn các giá trị mới vào hai cột này, trong đó giá trị Bảng chữ cái theo thứ tự ASC :
và các cột trong bảng Ví dụ trông như thế này. Bây giờ một lần nữa thực hiện các hoạt động tương tự:
Bạn có thể thấy các giá trị trong cột đầu tiên theo thứ tự desc nhưng cột thứ hai không theo thứ tự ASC.
(g, 10),(g,12)
. Sau đó, chạy lệnh bằng của bạn truy vấn, bạn sẽ có được cột thứ hai là ASC
thứ tự (mà phương tiệng-10,g-11,g-12)
Bạn có thể sử dụng nhiều thứ tự trên nhiều điều kiện,
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC