1. 程式人生 > >distinct 去重複,group by 資料分組,還是說拿起就用篇--2(嗯算是吧。)

distinct 去重複,group by 資料分組,還是說拿起就用篇--2(嗯算是吧。)

<?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 來供使用好了。(決不是因為懶得截圖儲存插入)(最後說句心理話,本來就只是打算寫個自己的備忘錄而已。)