MySQL之复杂查询的实现
mysql 实现 查询 复杂
2023-06-13 09:19:42 时间
ORDER BY 子句来设定哪个字段哪种方式来进行排序,再返回搜索结果。
desc:降序
asc:升序,默认,可不写
select * from blog order by balance asc;多字段排序
update blog set age = 25 where age先根据年龄升序,再根据余额降序
select * from blog order by age asc, balance desc;GROUP BY 语句根据一个或多个列对结果集进行分组。
新建员工表
`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 )
统计每人打卡总数
其中记录 NULL 表示所有人的登录次数。
使用 coalesce 来设置一个可以取代 NUll 的名称
coalesce 语法:select coalesce(a,b,c);
UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
UNION ALL:返回所有结果集,包含重复数据。
UNION ALL
select identity from employee;
报错:Illegal mix of collations for operation UNION
原因:相同字段的编码不一致造成的
解决:修改blog表的author字段
alter table blog modify `author` varchar(40) COLLATE utf8mb4_general_ci NOT NULL DEFAULTUNION DISTINCT: 删除结果集中重复的数据。默认,可不写
select author from blogUNION
select identity from employee; 4.多表连接 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
内连接
INNER 可以省略
INNER JOIN employee e on b.author = e.identity;
where条件实现内连接效果
select b.author, b.age, b.title, e.name, e.signin from blog b,employee ewhere b.author = e.identity;
左连接:读取左边数据表的全部数据,即便右边表无对应数据。
select b.author, b.age, b.title, e.name, e.signin from blog bLEFT JOIN employee e on b.author = e.identity;
右连接:读取右边数据表的全部数据,即便左边边表无对应数据。
select b.author, b.age, b.title, e.name, e.signin from blog bRIGHT JOIN employee e on b.author = e.identity;
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL之复杂查询的实现
相关文章
- MySQL实现字段自动计算的简单方法(mysql字段自动计算)
- 自动备份MySQL定时任务:每天自动备份(mysql定时任务每天)
- MySQL更新数据:完成一条记录的变更(mysql更新一条数据)
- MySQL: 遍历所有表的方法(mysql遍历所有表)
- MySQL连接操作:简单又高效(mysql连接软件)
- MySQL批量修改:高效强大改变表结构(mysql批量修改)
- MySQL版本升级:突破你的技术障碍(mysql版本升级)
- MySQL查询结果集如何判断(mysql结果判断)
- 深入探究MySQL字符集的变化与特点(查询mysql字符集)
- 如何实现 MySQL 数据升级?(mysql数据升级)
- 如何复制MySQL数据库?(mysql复制一个数据库)
- Mysql数据库:能否实现联网?(mysql数据库能联网吗)
- 安卓手机连接Mysql数据库(安卓连mysql)
- 优化MySQL分页效率优化:实现快速检索与分页(mysql分页效率)
- MySQL查询字符编码,了解数据存储原理(mysql查询字符编码)
- 以zblog为基础构建MySQL数据库技术研究(zblog mssql)
- MySQL查询结果总页数实现方法(mysql 总页数)
- 高效运维 MySQL:搭建性能卓越的中文服务器(高性能mysql 中文版)
- MySQL 5.6.35:稳定性优化之旅(mysql 5.6.35)
- MySQL中如何处理中文数据(mysql中使用中文)
- 深入探讨使用OR查询在MySQL中可能影响查询效率(mysql中or影响效率)
- MySQL如何进行两表相连查询(mysql 两表相连查询)
- AMD 用u装MySQL极速体验你所梦想的未来(amd的u装mysql)
- 解决MySQL命令行乱码问题(cmd命令mysql乱码)
- 如何实现MySQL优化与高效管理(.def mysql)
- MySQL中如何写文件地址(mysql中写文件地址)
- MySQL内连接查询详解(mysql中内连接查询)
- 使用MySQL ZIP文件还原数据库备份的步骤(mysql zip 还原)
- MySQL去重技巧如何避免数据中包含重复数据(mysql不包含重复)
- MySQL查询操作使用不等于0语句筛选数据(mysql不等于0语句)
- MySQL不支持集合查询,如何绕过这个限制(mysql不支持集合查询)