问题
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?
回答1:
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)
来源:https://stackoverflow.com/questions/41814895/how-can-i-order-by-two-columns-if-result-is-equal-consider-another-column