MySQL之复杂查询的实现


当前第2页 返回上一页

其中记录 NULL 表示所有人的登录次数。
使用 coalesce 来设置一个可以取代 NUll 的名称
coalesce 语法:select coalesce(a,b,c);

SELECT name, SUM(signin) as signin_count FROM employee GROUP BY name WITH ROLLUP;

3.联合查询

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
UNION ALL:返回所有结果集,包含重复数据。

select author from blog 
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 DEFAULT '';

UNION DISTINCT: 删除结果集中重复的数据。默认,可不写

select author from blog 
UNION
select identity from employee;

4.多表连接

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

内连接
INNER 可以省略

select b.author, b.age, b.title, e.name, e.signin from blog b 
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 e 
where b.author = e.identity;

左连接:读取左边数据表的全部数据,即便右边表无对应数据。

select b.author, b.age, b.title, e.name, e.signin from blog b 
LEFT JOIN employee e on b.author = e.identity;

右连接:读取右边数据表的全部数据,即便左边边表无对应数据。

select b.author, b.age, b.title, e.name, e.signin from blog b 
RIGHT JOIN employee e on b.author = e.identity;

 到此这篇关于MySQL之复杂查询的实现的文章就介绍到这了,更多相关MySQL 复杂查询内容请搜索

更多相关Mysql内容来自木庄网络博客


标签:Mysql

返回前面的内容

相关阅读 >>

为什么使用mysql

mysql 怎么重装

mysql实现linux下数据库目录迁移

mysql索引是自动使用的么

mysql如何在win10中配置环境变量

mysql 如何设计主键

mysql如何直接解压安装

mysql怎么删除注册表

轻松将mysql卸载干净

如何理解数据库事务隔离级别及脏读、不可重复读、幻读

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...