排序
我們使用SELECT查詢時(shí),細(xì)心的讀者可能注意到,查詢結(jié)果集通常是按照id排序的,也就是根據(jù)主鍵排序。這也是大部分?jǐn)?shù)據(jù)庫的做法。如果我們要根據(jù)其他條件排序怎么辦?可以加上ORDER BY子句。例如按照成績從低到高進(jìn)行排序:
-- 按score從低到高
SELECT id, name, gender, score FROM students ORDER BY score;
Run
如果要反過來,按照成績從高到底排序,我們可以加上DESC表示“倒序”:
-- 按score從高到低
SELECT id, name, gender, score FROM students ORDER BY score DESC;
Run
如果score列有相同的數(shù)據(jù),要進(jìn)一步排序,可以繼續(xù)添加列名。例如,使用ORDER BY score DESC, gender表示先按score列倒序,如果有相同分?jǐn)?shù)的,再按gender列排序:
-- 按score, gender排序:
SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;
Run
默認(rèn)的排序規(guī)則是ASC:“升序”,即從小到大。ASC可以省略,即ORDER BY score ASC和ORDER BY score效果一樣。
如果有WHERE子句,那么ORDER BY子句要放到WHERE子句后面。例如,查詢一班的學(xué)生成績,并按照倒序排序:
-- 帶WHERE條件的ORDER BY:
SELECT id, name, gender, score
FROM students
WHERE class_id = 1
ORDER BY score DESC;
Run
這樣,結(jié)果集僅包含符合WHERE條件的記錄,并按照ORDER BY的設(shè)定排序。
小結(jié)
使用ORDER BY可以對(duì)結(jié)果集進(jìn)行排序;
可以對(duì)多列進(jìn)行升序、倒序排序。