將 where 子句與 group by 子句一起使用
分組查詢可以在形成組和計算列函數之前具有消除非限定行的標准 where 子句。必須在group by 子句之前指定 where 子句
$result = mysql教程_query("select groups教程,name,goods from table group by groups,name order by name");
$arr = array();
$i = 0;
while($row = mysql_fetch_array($result)){
$arr[] = $row;
}$m = $i - 1;
foreach($arr as $k=>$v){
if($v[$i]['groups'] <> $v[$m]['groups']){
echo '分割符號';
}
echo $v['name'],$v['goods'];
}
看個應用實例
group by語法可以根據給定數據列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。
select子句中的列名必須為分組列或列函數。列函數對於group by子句定義的每個組各返回一個結果。
某個員工信息表結構和數據如下:
id name dept salary edlevel hiredate
1 張三 開發部 2000 3 2009-10-11
2 李四 開發部 2500 3 2009-10-01
3 王五 設計部 2600 5 2010-10-02
4 王六 設計部 2300 4 2010-10-03
5 馬七 設計部 2100 4 2010-10-06
6 趙八 銷售部 3000 5 2010-10-05
7 錢九 銷售部 3100 7 2010-10-07
8 孫十 銷售部 3500 7 2010-10-06例如,我想列出每個部門最高薪水的結果,sql語句如下:
select dept, max(salary) as maximum
from staff
group by dept查詢結果如下:
dept maximum
開發部 2500
設計部 2600
銷售部 3500
我們現在回到函數上。記得我們用 sum 這個指令來算出所有的 sales (營業額)吧!如果我們的需求變成是要算出每一間店 (store_name) 的營業額 (sales),那怎麼辦呢?在這個情況下,我們要做到兩件事:第一,我們對於 store_name 及 sales 這兩個欄位都要選出。第二,我們需要確認所有的 sales 都要依照各個 store_name 來分開算。這個語法為:
select "欄位1", sum("欄位2") from "表格名" group by "欄位1"
select store_name, sum(sales) from store_information group by store_name
在我們的示范上,
store_information 表格
store_name sales date
los angeles $1500 jan-05-1999
san diego $250 jan-07-1999
los angeles $300 jan-08-1999
boston $700 jan-08-1999
我們就打入
select store_name, sum(sales) from store_information group by store_name結果:
store_name sum(sales)
los angeles $1800
san diego $250
boston $700