Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
250 views
in Technique[技术] by (71.8m points)

mysql - How can I order by two columns, if result is equal, consider another column?

I have tables called marks, total_marks, and aggregate. I want to sort the results first depending on the aggregate, but when the aggregate in the same column is equal to the next, then consider the student with the highest total. I.e., order by aggregate, but if the last aggregate is equal to the new one, how can I then give the highest rank to the one with higher total?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

With SQL you can sort by multiple columns:

SELECT * from marks ORDER BY aggregate DESC, total_marks DESC

This will sort all your rows by aggregate first (highest first) and rows with the same aggregate value will then be sorted by "total_marks" (also highest first). You can invert the sorting for the individual columns by changing the sort direction from DESC(ending) (i.e. highest first) to ASC(ending) (i.e. lowest first)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...