SQL多表连接查询分类:
1、等值连接查询
1.1、内链接查询
1.2、自然连接查询
2、外连接查询,包括
2.1、左外连接查询
2.2、右外连接查询
2.3、全外连接查询
3、交叉连接查询
扫描二维码关注公众号,回复:
1340943 查看本文章
现在有2张表,一张t_user,一张t_book,一对多的关系,二者没建立外键,其中个t_user中有个user没在t_book中体现,t_book中有条book的userId也没有在t_user中体现。
等值连接查询:
select * from t_user u inner join t_book b on u.id=b.userid
结果只有2张表的有关联的数据才被查出来了。
它相当于用where的连接查询:
SELECT * FROM t_book b,t_user u WHERE u.id=b.userid
自然连接查询:不需要指明任何等同连接条件就可以查出来,并且能去掉重复的列。
SELECT * FROM t_book b NATURAL JOIN t_user u
左外连接查询:
select * from t_user u left join t_book b on u.id=b.userid
它等同于把t_user放在right join后面的
右外连接查询:
SELECT * FROM t_book b RIGHT JOIN t_user u ON u.id=b.userid
全外连接查询:在mysql中好像有问题??
SELECT * FROM t_book b FULL JOIN t_user u ON u.id=b.userid
交叉连接查询:如果后面不带on,那么结果是两个表列的乘积,笛卡尔积
SELECT * FROM t_book b CROSS JOIN t_user u