ฉันกำลังพยายามเรียงลำดับตามคอลัมน์ต่างๆใน SQL และไปในทิศทางที่ต่าง column1
จะเรียงจากมากไปน้อยและcolumn2
จากน้อยไปมาก
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันกำลังพยายามเรียงลำดับตามคอลัมน์ต่างๆใน SQL และไปในทิศทางที่ต่าง column1
จะเรียงจากมากไปน้อยและcolumn2
จากน้อยไปมาก
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ORDER BY column1 DESC, column2
สิ่งนี้จะเรียงลำดับทุกอย่างด้วยcolumn1
(มากไปหาน้อย) ก่อนจากนั้นตามด้วยcolumn2
(น้อยไปมากซึ่งเป็นค่าเริ่มต้น) เมื่อใดก็ตามที่column1
เขตข้อมูลสำหรับสองแถวหรือมากกว่านั้นเท่ากัน
column1
แรกและตามcolumn2
เมื่อใดก็ตามที่column1
เขตข้อมูลสำหรับสองแถวเท่ากัน
column2
นั้นดำเนินการ STABLE column1
เรียงลำดับตาม นี่ชัดเจนสำหรับคนที่รู้ว่าการเรียงลำดับที่เสถียรคืออะไร
คำตอบอื่น ๆ ไม่มีตัวอย่างที่เป็นรูปธรรมดังนั้นที่นี่มันจะไป:
รับตารางPeopleดังต่อไปนี้:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
หากคุณดำเนินการค้นหาด้านล่าง:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
ชุดผลลัพธ์จะมีลักษณะดังนี้:
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
มีวิธีการใด ๆ ที่เราสามารถเอาชนะนี้หรือไม่?
FirstName, LastName
รายการซ้ำซ้อนที่แตกต่างกันYearOfBirth
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
การสั่งซื้อหลายคอลัมน์ขึ้นอยู่กับค่าที่สอดคล้องกันของทั้งสองคอลัมน์: ที่นี่คือตัวอย่างตารางของฉันที่มีสองคอลัมน์ชื่อที่มีอักษรและตัวเลขและค่านิยมในทั้งสองคอลัมน์ที่มีการเรียงและรายละเอียดการสั่งซื้อ
ตอนนี้ฉันทำการสั่งซื้อโดยในคอลัมน์ทั้งสองนี้โดยดำเนินการคำสั่งด้านล่าง:
ตอนนี้ฉันใส่ค่าใหม่ในคอลัมน์ทั้งสองนี้อีกครั้งโดยที่ค่าตัวอักษรในลำดับASC :
และคอลัมน์ในตารางตัวอย่างมีลักษณะเช่นนี้ ตอนนี้ทำการดำเนินการอีกครั้ง:
คุณสามารถเห็นค่าในคอลัมน์แรกอยู่ในลำดับจากมากไปน้อย แต่คอลัมน์ที่สองไม่อยู่ในลำดับ ASC
(g, 10),(g,12)
ยังแทรกข้อมูลนี้มากเกินไป จากนั้นเรียกใช้คำสั่งซื้อตามคำสั่งของคุณคุณจะได้รับคอลัมน์ที่สองเป็นASC
คำสั่งซื้อ (นั่นหมายความว่าg-10,g-11,g-12)
คุณสามารถใช้การสั่งซื้อหลายครั้งในหลายเงื่อนไข
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