mysql查询连接_mysql中的查询连接

查询连接分为4类:内连接、外连接、交叉连接、自然连接

一、交叉连接 cross join

select * from 表A cross join 表B;  -- 结果是笛卡尔积, 等价于select * from 表A, 表B; 避免使用

二、内连接 inner join

select * from 表A [inner] join 表B [on 表A.字段 = 表B.字段];  -- on后的条件若省略, 等同于交叉连接。 同时on可用where代替,但效率会降低。

select A.*, B.name as N from mytab as A [inner] join myclass as B [on A.字段 = B.字段];  -- 使用字段/表别名,用于两表出现同名字段或表名太长时

三、外连接 outer join

1. left join 以左表为主表, right join 以右表为主表, 不管匹配是否成功都会保留,

主表每条记录都与副表B进行匹配,匹配成功则连接B表正确数据, 失败则把连接到A表的B表数据置为空

不管怎么连接,结果都是左表在左面,右表在右边

2. 左外连接(左连接):

select * from 表A left join 表B on 表A.字段 = 表B.字段;  -- on 不可以省略, 以表A作为主表

右外连接(右连接):

select * from 表A right join 表B on 表A.字段 = 表B.字段;  -- 以表B作为主表

四、自然连接

1. 以两表中相同的字段名进行匹配, 如果有多个相同字段名, 那么所有名字都相同才匹配成功。并且会合并同名字段。

2. 自然内连接:select * from 表A natural join 表B;

3. 自然左/右连接:select * from 表A natural left/right join 表B;

五、内、外连接模拟自然连接

select * from 表A inner/left/right join 表B using(同名字段); -- 以同名字段做为条件进行连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值