MYSQL开发技巧
2015-06-17 18:52
621 查看
a表取经四人组 b表悟空的兄弟
1.Join操作的类型–Inner Join
內连接Inner join 基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。
产生的结果集如(图一)红色区域
例如:同时存在与取经四人组中的和悟空的兄弟表中的记录为:
2.Join操作的类型–Left Outer Join
例:查询取经四人组中哪些不是孙悟空的兄弟
3.Join操作的类型–Right Outer Join
例如:悟空的结拜兄弟中哪些没有去取经
4.Join操作的类型–Full Join
在MYSQL中执行会报错,MYSQL**不支持Full Join** 通过UNION ALL实现。
5.Join操作的类型–Corss Join 交叉查询得到的结果为两个表的记录相乘的结果集 笛卡尔基
1.Join操作的类型–Inner Join
內连接Inner join 基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表。
产生的结果集如(图一)红色区域
例如:同时存在与取经四人组中的和悟空的兄弟表中的记录为:
SELECT a.user_name,a.over,b.over FROM a inner JOIN b ON a.user_name=b.user_name
2.Join操作的类型–Left Outer Join
SELECT a.user_name,a.over,b.over FROM a LEFT JOIN b ON a.user_name=b.user_name;
例:查询取经四人组中哪些不是孙悟空的兄弟
SELECT a.user_name,a.over,b.over FROM a LEFT JOIN b ON a.user_name=b.user_name WHERE b.user_name is NULL;
3.Join操作的类型–Right Outer Join
SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name ;
例如:悟空的结拜兄弟中哪些没有去取经
SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name WHERE a.user_name IS NULL;
4.Join操作的类型–Full Join
SELECT b.'user_name',b.'over',a.'over' FROM a FULL JOIN b ON a.'user_name'=b.'user_name'
在MYSQL中执行会报错,MYSQL**不支持Full Join** 通过UNION ALL实现。
SELECT a.user_name,a.over,b.over FROM a LEFT JOIN b ON a.user_name=b.user_name UNION ALL SELECT b.user_name,b.over,a.over FROM a RIGHT JOIN b ON a.user_name=b.user_name
5.Join操作的类型–Corss Join 交叉查询得到的结果为两个表的记录相乘的结果集 笛卡尔基
SELECT a.user_name,a.over,b.user_name,b.over FROM a CROSS JOIN b
相关文章推荐
- MySQL中的integer 数据类型
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复
- MySQL 优化
- MySQL 数据类型
- Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month