1、select * from (select * from table) as tmp
from后面紧跟的是表,而使用select语句选出来的是一组元组,使用as给这个元组重命名为a的一张表
2、group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
select id,group_concat(name) from aa group by id; //默认concat分隔符“,”号
3、substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('15,151,152,16',',',2),',',-1);==>得到结果为: 151
4、
where、having、in 语句
1、字段重复记录查询:数据条数大于1的就是重复的数据
select name,count(*) as count from student group by name having count>1; //查询重名的学生
2、主从查询语句:查出所有的重名学生,先子查询having出名字重复name(只返回name),再主where查询出name集中的学生;
select * from student as s where (s.name) in (select name from student group by name having count(*) > 1);
where后为过滤条件语句,having后为以聚合函数为过滤条件语句,in后为集合交集语句;
主从查询时,同一字段需要做点运算:主查询语句的表名需要取别名,因为子查询用的表名和主查询的表名需要区分;
HAVING 子句对 GROUP BY 子句设置条件的方式,与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。
select id, name from student group by name having count(*) > 1
WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
GROUP BY 子句用来分组 WHERE 子句的输出。
HAVING 子句用来从分组的结果中筛选行。
ORDER BY 子句可用于排序 GROUP BY 子句的输出