在我们使用MySQL进行联表查询的时候,经常使用Left Join的方式。如果两张表的关联条件是唯一对应的,那么自然没问题。
用户:
组织:
联表查询结果:
当有多个组织的时候,问题就出现了:
联表查询结果:
出现了两个相同的结果。其实我们的本意是查询用户,顺便将用户所属的组织带出来,这样用户列表中查询出来的数据就会多处一些不是我们想要的数据了,查询返回的数据是有问题的。
我们来看看Left Join的特性:
左表中的记录数是它将返回的最小记录数。如果右表中有两条记录与左表中的一条记录匹配,它将返回两条记录。所以当我们决定使用Left Join的时候,需要进行业务方面的确认。否则查询出来的结果不是我们想要的。
如果只是从LEFT表返回数据,并且只想为LEFT表中的每一行返回一行,那么我们不需要执行JOIN,而可以直接从LEFT表中进行SELECT。然后再从进行匹配操作。