当前位置:网站首页>mysql 基础查询
mysql 基础查询
2022-06-23 05:38:00 【小代码2016】
参考
http://www.nowamagic.net/librarys/veda/detail/936
sql join 图

down
sql
create table tablea(
id int primary key auto_increment,
uname varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into tablea(uname) values('Pirate');
insert into tablea(uname) values('Monkey');
insert into tablea(uname) values('Ninja');
insert into tablea(uname) values('Spaghetti');
create table tableb(
id int primary key auto_increment,
uname varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into tableb(uname) values('Rutabaga');
insert into tableb(uname) values('Pirate');
insert into tableb(uname) values('Darth Vader');
insert into tableb(uname) values('Ninja');
笛卡尔积
select
a.id as 'a_id',
a.uname as 'a_name',
b.id as 'b_id',
b.uname as 'b_name'
from
tablea a,
tableb b;
+------+-----------+------+-------------+
| a_id | a_name | b_id | b_name |
+------+-----------+------+-------------+
| 1 | Pirate | 1 | Rutabaga |
| 2 | Monkey | 1 | Rutabaga |
| 3 | Ninja | 1 | Rutabaga |
| 4 | Spaghetti | 1 | Rutabaga |
| 1 | Pirate | 2 | Pirate |
| 2 | Monkey | 2 | Pirate |
| 3 | Ninja | 2 | Pirate |
| 4 | Spaghetti | 2 | Pirate |
| 1 | Pirate | 3 | Darth Vader |
| 2 | Monkey | 3 | Darth Vader |
| 3 | Ninja | 3 | Darth Vader |
| 4 | Spaghetti | 3 | Darth Vader |
| 1 | Pirate | 4 | Ninja |
| 2 | Monkey | 4 | Ninja |
| 3 | Ninja | 4 | Ninja |
| 4 | Spaghetti | 4 | Ninja |
+------+-----------+------+-------------+
A与B的交集
A与B都有的
select
a.id as 'a_id',
a.uname as 'a_name',
b.id as 'b_id',
b.uname as 'b_name'
from
tablea a
inner join tableb b on a.uname = b.uname;
+------+--------+------+--------+
| a_id | a_name | b_id | b_name |
+------+--------+------+--------+
| 1 | Pirate | 2 | Pirate |
| 3 | Ninja | 4 | Ninja |
+------+--------+------+--------+
左外链接
输出的是A的全集,且B表中匹配的则有值,没有的则为NULL
select
a.id as 'a_id',
a.uname as 'a_name',
b.id as 'b_id',
b.uname as 'b_name'
from
tablea a
left outer join tableb b on a.uname = b.uname;
+------+-----------+------+--------+
| a_id | a_name | b_id | b_name |
+------+-----------+------+--------+
| 1 | Pirate | 2 | Pirate |
| 3 | Ninja | 4 | Ninja |
| 2 | Monkey | NULL | NULL |
| 4 | Spaghetti | NULL | NULL |
+------+-----------+------+--------+
A中有而B中没有的

select
a.id as 'a_id',
a.uname as 'a_name',
b.id as 'b_id',
b.uname as 'b_name'
from
tablea a
left outer join tableb b on a.uname = b.uname
where
b.id is null;
+------+-----------+------+--------+
| a_id | a_name | b_id | b_name |
+------+-----------+------+--------+
| 2 | Monkey | NULL | NULL |
| 4 | Spaghetti | NULL | NULL |
+------+-----------+------+--------+
A与B都有的

# mysql 不支持
select * from tablea a full outer join tableb b on a.id = b.id;
# mysql 全外链接
select
*
from
tablea a
left join tableb b on a.uname = b.uname
union
select
*
from
tablea a
right join tableb b on a.uname = b.uname;
+------+-----------+------+-------------+
| id | uname | id | uname |
+------+-----------+------+-------------+
| 1 | Pirate | 2 | Pirate |
| 3 | Ninja | 4 | Ninja |
| 2 | Monkey | NULL | NULL |
| 4 | Spaghetti | NULL | NULL |
| NULL | NULL | 1 | Rutabaga |
| NULL | NULL | 3 | Darth Vader |
+------+-----------+------+-------------+
A与B中都没有的

# mysql 不支持
select * from tablea a full outer join tableb on a.id = b.id where a.id is null or b.id is null;
select
*
from
tablea a
left join tableb b on a.uname = b.uname
where b.uname is null
union
select
*
from
tablea a
right join tableb b on a.uname = b.uname
where a.uname is null;
+------+-----------+------+-------------+
| id | uname | id | uname |
+------+-----------+------+-------------+
| 2 | Monkey | NULL | NULL |
| 4 | Spaghetti | NULL | NULL |
| NULL | NULL | 1 | Rutabaga |
| NULL | NULL | 3 | Darth Vader |
+------+-----------+------+-------------+
边栏推荐
- Explain csma/cd, token bus and token ring clearly
- XXL-SSO 实现SSO单点登录
- Skilled use of slicing operations
- 项目_过滤器Filter解决中文乱码
- Haas 506 2.0 Tutoriel de développement - bibliothèque de composants avancés - modem. SMS (ne prend en charge que les versions supérieures à 2,2)
- mysql如何将日期转为数字
- 1161 Merging Linked Lists
- Haas506 2.0 development tutorial - Advanced Component Library -modem Net (only supports versions above 2.2)
- 2.17 haas506 2.0开发教程-system(仅支持2.2以上版本)
- 【shell】Tree命令
猜你喜欢

开源OAuth2框架 实现SSO单点登录
Link of Baidu URL Parameters? Recherche sur le chiffrement et le décryptage des paramètres d'URL (exemple de Code)

Qt使用多线程编译项目的方法

Docker practice - redis cluster deployment and micro service deployment project

C# wpf 通过绑定实现控件动态加载

Haas506 2.0 development tutorial - Advanced Component Library -modem SMS (only supports versions above 2.2)

haas506 2.0开发教程-高级组件库-modem.sms(仅支持2.2以上版本)

解析创客教育中的个性化学习进度

idea安装 CloudToolkit 插件

Get to know webassembly quickly
随机推荐
C language stepping on the pit: document coding error, resulting in Base64 Chinese coding error
Skilled use of slicing operations
什么是客户体验自动化?
A review: neural oscillation and brain stimulation in Alzheimer's disease
swagger3整合oauth2 认证token
嵌入式实时系统线程的副作用
haas506 2.0开发教程-高级组件库-modem.voiceCall(仅支持2.2以上版本)
JS to create an array (all elements are objects)
Media industry under the epidemic situation, small program ecology driven digital transformation exploration
mars3d点线面的绘制和重置
Coordinate transformation
C语言学习总结
Golang regular regexp package use -04- use regular replacement (replaceall(), replaceallliteral(), replaceallfunc())
中台库存中的实仓与虚仓的业务逻辑设计
/bin/sh no such file or directory问题
Get to know webassembly quickly
Laravel log channel 分组配置
如何迁移virtualbox 的虚拟机到hype-v
【shell】Tree命令
Kubesphere offline deployment without network environment