1. 左联结(left join)

联结结果保留左表的全部数据,需要通过某个属性连接两个表。若左表未能与右表进行连接,在查询结果中任然会保留左表的信息,但相应连接属性会为null。
如力扣中该题
https://leetcode-cn.com/problems/combine-two-tables/

  1. create database tmp;
  2. use tmp;
  3. create table Person (
  4. PersonId int primary key,
  5. FirstName varchar(20) ,
  6. LastName varchar(20)
  7. );
  8. INSERT INTO `tmp`.`Person` (`PersonId`, `FirstName`, `LastName`) VALUES ('1', '张', '三');
  9. INSERT INTO `tmp`.`Person` (`PersonId`, `FirstName`, `LastName`) VALUES ('2', '李', '四');
  10. INSERT INTO `tmp`.`Person` (`PersonId`, `FirstName`, `LastName`) VALUES ('3', '王', '五');
  11. INSERT INTO `tmp`.`Person` (`PersonId`, `FirstName`, `LastName`) VALUES ('4', '赵', '六');
  12. create table Address(
  13. AddressId int primary key ,
  14. PersonId int ,
  15. City varchar(20) ,
  16. State varchar(20)
  17. );
  18. INSERT INTO `tmp`.`Address` (`AddressId`, `PersonId`, `City`, `State`) VALUES ('1', '1', '北京', '在线');
  19. INSERT INTO `tmp`.`Address` (`AddressId`, `PersonId`, `City`, `State`) VALUES ('2', '2', '上海', '在线');
  20. INSERT INTO `tmp`.`Address` (`AddressId`, `PersonId`, `City`, `State`) VALUES ('3', '3', '深圳', '在线');
  1. select FirstName, LastName, City, State
  2. from Person left join Address
  3. on Person.PersonId = Address.PersonId;

所使用的表:
image.png image.png
查询结果:
image.png

2.右联结(right join)

联结结果保留右表的全部数据

3.内联结(inner join)

取两表的公共数据