1. 程式人生 > >查詢結果排序,多列排序,聚合函式,查詢分組,篩選結果,select語句執行順序

查詢結果排序,多列排序,聚合函式,查詢分組,篩選結果,select語句執行順序

對指定列進行排序

單列排序要素(order_by_list按該列排序)

select col_list form table_name order by order_by_list [ASC|DESC]

例如查詢分數表中編號為1的所有分數資訊並按照分數升序排序

select * form scores where gno=1 order by score asc

例如查詢分數表中編號為1的所有分數資訊並按照分數降序排序

select * form scores where gno=1 order by score desc

對多列進行排序

多列排序要點:(排序依據

排序方式優先順序

(理解優先順序如果金牌數高先排金牌數如果金牌數相同在比較銀牌數如果銀牌數相同在比較銅牌數)

例如查詢分數表所有資訊並按照遊戲編號的升序排序和分數的降序進行排序

select * form scores order by asc ,score desc


聚合函式

例如查詢玩家表中一共有多少玩家資訊

select count(user_qq) from users

如果user_qq為空則不會被統計

改寫:select count(*) from users

例如查詢qq號是12301的玩家遊戲總分數

select sum(score) as '總分數

' from scores where user_qq='12301'

例如檢視qq號是12302的玩家的平均分

select avg(score) as '平均分' form scores where user_qq='12302'

例如檢視遊戲編號是1的遊戲的最高分數

select max(score) as '最高分' form scores where gno=1

例如檢視QQ號是12302的玩家的總分平均分最高分

select

sum(score) as '總分'

avg(score) as '平均分'

max(score) as '最高分'

form scores

where user_qq='12302'

在結果集中進行分組

例如要求查詢每個玩家的總分數平均分最高分

select

sum(score) as '總分'

avg(score) as '平均分'

max(score) as '最高分'

form scores

group by user_qq

篩選分組的結果(having一定要寫在group by之後

select

sum(score) as '總分'

avg(score) as '平均分'

max(score) as '最高分'

form scores

group by user_qq

having avg(score)>4000

例如查詢所有使用者的的平均分數和總分數並按平均分倒序排列

select user_qq,

avg(score) as '平均分',

sum(score) as '總分數'

from scores

group by user_qq

order by avg(score) desc

select語句的執行順序

from子句指定資料來源

where子句基於指定的條件對記錄進行篩選

group by 子句將資料劃分為多個組

用聚合函式進行計算

使用having子句篩選分組

使用order by子句對結果進行排序