<?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 来供使用好了。(决不是因为懒得截图保存插入)(最后说句心理话,本来就只是打算写个自己的备忘录而已。)