美文网首页
Mysql left join 问题

Mysql left join 问题

作者: 白驹过隙_忽然而已 | 来源:发表于2020-04-29 10:04 被阅读0次

select A.,B.
from A
left join B on B.name=A.name
where A.id=3
left join 会 列出所有左表(A)相应name的数据,如果B中没有与A对应的,则B的字段置Null。此时where的过滤条件只能作用于 left join后的中间表。
注意以下三点:

  1. left join 会列出左表所有的数据!
  2. on 只作用于生成中间表!
  3. where 只作用于生成后的中间表!
问题记录:
public class User{
  private int id;
  private String name;
  private List<Car> list;
  ······
}
public class House{
  private int id;
  private String name;
  private int userId
  ······
}
select u.*,h.*
from user u
left join house h on u.id = house.userId
where u.id= ?

会出现list.size()>1 但是元素全是null的情况。

可以看看这篇 on 和where条件的放置详解

如果要过滤右表元素,需要将条件放在 ON;
如果要过滤左表元素,需要将条件放在 WHERE;

相关文章

网友评论

      本文标题:Mysql left join 问题

      本文链接:https://www.haomeiwen.com/subject/wirbwhtx.html