distinct 去重複,group by 資料分組,還是說拿起就用篇--2(嗯算是吧。)
阿新 • • 發佈:2019-02-06
<?php include('./Conf.php'); include('./CEMysql.class.php'); $DB = new CEMysql; $sql = 'select distinct fieldOne,fieldTwo from tableName group by fieldTwo'; $result = $DB -> query($sql); var_dump($result); // distinct 去重複,唯一的 獲取的資料 distinct 指定的欄位只保留一個結果 // group by 分組 將資料依據某個欄位進行分組 // 啊,試了樓上的語句你大概會發現,嗯 distinct 指定的欄位還是會有重複的(當然也可能沒有重複,因為你的資料太少了。) // 這是因為 group 依舊 fieldTwo 作為分組條件,這樣的話每個 fieldTwo 的分組裡面的 fieldOne 就是具有唯一的。 // 為什麼我感覺很少有人需求我上面那樣的寫法,(嗯,我這樣寫出來也是單純的為了直接將兩個方法寫出來而已。) /**************** distinct 去重 ***************************/ // 資料查詢,去除重複的,只取唯一值 $sql = 'select distinct field from tableName'; $result = $DB -> query($sql); var_dump($result); // 這樣就能夠獲取整個資料內所有的不同 field 了。 // 如果想要統計他們的數量,可以這樣寫。 $sql = 'select count(distinct field) as total from tableName'; $result = $DB -> query($sql); var_dump($result); // count mysql 統計函式,統計返回資料的總數量。 /*************************** group by 分組 *****************************/ // 資料分組查詢 $sql = 'select field from tableName group by field'; $result = $DB -> query($sql); var_dump($result); // 資料將依據 field 進行分組返回,(其實已經去重複了,因為每個分組的名字肯定是不同的,就好比陣列的鍵一樣) // 而且改操作支援多個引數的,已逗號新增,值得注意的是,mysql 會依據引數先後進行分組。 // 人狠話不多,上程式碼 $sqlOne = 'select fieldOne,fieldTwo from tableName group by '. 'fieldOne,fieldTwo'; $sqlTwo = 'select fieldOne,fieldTwo from tableName group by '. 'fieldTwo,fieldOne'; // 注意後面操作 group by 的兩個欄位順序是不同的,如果你執行後,兩個語句所返回的結果也是不相同的。 // 至於分組操作能夠做寫什麼呢?舉個例子,我想知道每個 部門 fieldOne 下面對應下面每個 小組 fieldTwo 的總業績 fieldThree(再下去我就不知道怎麼分組了。),語句如下: $sql = 'select fieldOne,fielTwo,sum(fieldThree) as total from tableName group by fieldOne,fieldTwo'; $result = $DB -> query($sql); var_dump($result); // sum 統計函式 求和函式 統計該欄位所有值的和 // 這樣就能夠清晰快速得獲取到對應資料,不用再繼續其它操作那麼麻煩了的。 /******************************* 2018.04.13日 更新 ***************************/ // 別提到一個問題,根據性別統計每個性別所有的總人數。 // 分析下,根據性別返回即 分組 group by sex ,每個性別分別有多少人,總人數,即總資料量 count('') as total ,那麼 sql 語句可使用以下: $sql = 'select sex,count('') as total from tableName group by sex'; $result = $DB -> query($sql); var_dump($result); // 得出結果: /* +-----+-------+ | sex | total | +-----+-------+ | 1 | 10 | | 2 | 20 | | 3 | 1 | +-----+-------+ */
嗯,最後解釋下,我為什麼沒有發圖片,這是為了讓看到的人自己手動敲,加深映像,最多下次我準備 sql 來供使用好了。(決不是因為懶得截圖儲存插入)(最後說句心理話,本來就只是打算寫個自己的備忘錄而已。)