本文整理自网络,侵删。
目录
- 1.排序
- 2.分组
- 3.联合查询
- 4.多表连接
1.排序
ORDER BY 子句来设定哪个字段哪种方式来进行排序,再返回搜索结果。
desc:降序
select * from blog order by balance desc;
asc:升序,默认,可不写
select * from blog order by balance asc;
多字段排序
update blog set age = 25 where age < 25;
先根据年龄升序,再根据余额降序
select * from blog order by age asc, balance desc;
2.分组
GROUP BY 语句根据一个或多个列对结果集进行分组。
新建员工表
CREATE TABLE `employee` ( `id` int NOT NULL, `name` varchar(20) NOT NULL DEFAULT '', `identity` varchar(20) NOT NULL DEFAULT '', `signin` tinyint NOT NULL DEFAULT '0' COMMENT '打卡次数', `date` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
插入数据
INSERT INTO `employee` VALUES ('1', '小明', 'firemen', 3, '2022-02-21'), ('2', '小王', 'doctor', 3, '2022-02-21'), ('3', '小丽', 'police', 3, '2022-02-21'), ('4', '小王', 'doctor', 2, '2022-02-22'), ('5', '小明', 'firemen', 1, '2022-02-22'), ('6', '小丽', 'police', 3, '2022-02-22'), ('7', '小明', 'firemen', 2, '2022-02-23'), ('8', '小王', 'doctor', 2, '2022-02-23'), ('9', '小红', 'nurse', 3, '2022-02-23');
统计每人打卡记录数
SELECT name, COUNT(*) FROM employee GROUP BY name;
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)
统计每人打卡总数
SELECT name, SUM(signin) as signin_count FROM employee GROUP BY name WITH ROLLUP;
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL之复杂查询的实现
标签:mysql
相关推荐
评论
管理员已关闭评论功能...