相关借鉴1
相关借鉴2
之前自己一直做的Unity前端的部分,很少做后台的开发。由于今年大佬都不在了,只能自己一个人进行后台的开发,在这里记一下数据库多表联查相关的知识:
基本定义:
left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
right join(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
inner join(等值连接或者叫内连接):只返回两个表中连接字段相等的行。
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
表测试数据:
students表:
colleges表:
一、内连接
关键字:inner join on
语句:SELECT * FROM students a INNER JOIN colleges b ON a.`college`=b.`name`;
执行结果:
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
二、左连接
关键字:left join on / left outer join on
语句:SELECT * FROM students a LEFT JOIN colleges b ON a.college=b.name;
执行结果:
说明:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
左(外)连接,左表(students)的记录将会全部表示出来,而右表(colleges)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
三、右连接(右外连接)
关键字:right join on / right outer join on
语句:SELECT * FROM students a RIGHT JOIN colleges b ON a.college=b.`name`;
执行结果:
说明:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(students)只会显示符合搜索条件的记录,而右表(colleges)的记录将会全部表示出来。左表记录不足的地方均为NULL。
四、全连接(全外连接)
格式:select a.name,b.job from A a full join B b on a.id=b.A_id
MySQL目前不支持此种方式,可以用其他方式替代解决。
五、三张表关联查询:
格式如下:
方法一:
select * from table1 a,table2 b,table3 c where a.sems_role_rid=b.rid and a.udeptid=c.deptid
方法二:(这种方法并不局限于左连接,可以灵活运用)
select * from table1 a left join table2 b on a.sems_role_rid=b.rid left join table3 c on a.udeptid=c.deptid