SQL的各种join整理

语句运行数据库为mysql。


1. join(inner join)  内链接   

    效果:仅在链接主表与内链接对象存在至少一个匹配时才返回数据库记录。

    sql: select * from card INNER JOIN cardtask on card.taskid = cardtask.id;

    结果:上述sql只查出了card表中两条有cardtask对应的记录。


2. left join 左链接

    效果:返回链接主表的所有记录,即使左链接对象表中无记录与其对应。

    sql:select * from card LEFT JOIN cardtask ON card.taskid = cardtask.id;

    结果:查询出了card表中全部的三条数据,其中只有两条记录在对应的cardtask区域有数据。


3. right join 右链接

    效果:返回右链接对象表中所有记录,如果链接主表中有数据没有在右链接对象表中找到记录,则不显示主表该记录。

    sql:select * from card RIGHT JOIN cardtask ON card.taskid = cardtask.id;

    结果:查询出了cardtask表中所有记录,但是card表中有一条记录没有查询出来,因为在其taskid没有在cardtas中有对应对象。


4. full join 全链接

    效果:返回两张表中所有的记录,表与表之间的对应记录没找到则空置。

    sql:select * from card FULL JOIN cardtask ON card.taskid = cardtask.id; (运行一直保存,一查才知道mysql不支持Full Join 关键字)

    修改后的sql:select * from card left join cardtask on card.taskid=cardtask.id union select * from card right join cardtask on card.taskid=cardtask.id;(左链接+右链接+去重也实现了FULL JOIN的逻辑)

    结果:查询出了两张表中所有记录,card表三条记录,cardtask表两条记录。多出来的一条card表记录因为taskid在cardtask表中未找到对应关系,没有对应的cardtask记录对应,空置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值