mysql多表查询 电脑版发表于:2022/5/4 9:06 代码如下:这个是更优化版本,后面可以放到我自己的大号里边去 ```sql /* 连接查询:笛卡尔积,内连接,外连接,自连接,联合查询 */ /* 笛卡尔积 一次性查询两张表,在from后面逗号分隔 18*6。{1,2} * {A,B,C} = {1A,1B,1C,2A,2B,2C......} */ select * from students,class /*内连接*/ -- 隐式内连接 语法:select 查询字段 from 表1,表2 where 两个表的连接条件 select students.username,class.ClassName from students,class where students.classid = class.Id -- 显示内连接 语法:select 查询字段 from 表1 join 表2 on 两个表的连接条件 (使用更新的连表查询) select students.username,students.age,class.ClassName,class.Position from students inner join class on students.classid = class.Id -- 连接表的时候取一个别名,简化语句,可以使用别名代替表名 select s.username,s.age,c.ClassName,c.Position from students s join class c on s.classid = c.id /*外连接*/ -- 左外连接 select s.username, ifnull(c.ClassName,'暂未如班级') from students s left outer join class c on s.classid = c.id -- 右外连接 (实际开发中右外连接使用比较少,因为右外连接通常使用左外连接代替) select s.username, ifnull(c.ClassName,'暂未如班级') from class c left outer join students s on s.classid = c.id select * from class /*自连接*/ -- 查询学生以及学生的领导 select * from students select s.username,mas.username as '领导' from students s join students mas on s.managerid = mas.id /* 联合查询(把两张表的结果联合起来) 一般用到分表的时候,查询结果联合起来 */ select * from students select * from student_cq -- 把学生表中年龄小于50岁的,和分表中薪水小于8000的结合起来 select * from students where age<50 union all select * from student_cq where salary<8000 select * from students where age<50 union select * from student_cq where salary<8000 ```