在 SQL 查询中,如果要将两个表关联起来,可以使用 JOIN 操作。然而,在某些情况下,仅仅使用 JOIN 并不会返回你想要的结果,你需要使用 LEFT JOIN 来确保数据完整性。

@Select('select * from role r LEFT JOIN u_r ur ON r.rid=ur.rid AND ur.uid=#{uid}')

@Select('select * from role r JOIN u_r ur ON r.rid=ur.rid AND ur.uid=#{uid}')

以上两句代码为什么不加 LEFT 读取不到数据内容?

如果在这两个查询语句中不加 LEFT JOIN 关键字,那么只会返回满足条件的交集部分的数据,而不会返回左表(role)中的所有数据。也就是说,如果某个用户(uid)没有在 u_r 表中与任何角色(rid)关联,那么这个用户在第一个查询中将不会出现在结果中,而在第二个查询中将返回空结果。

通过添加 LEFT JOIN 关键字,可以保证左表(role)中的所有数据都会被返回,即使在右表(u_r)中没有匹配的关联数据。这样就可以确保即使某个用户(uid)没有与任何角色(rid)关联,也能在结果中显示。

因此,如果你想要获取左表中的所有数据,无论是否有与之关联的数据,就应该使用 LEFT JOIN 关键字。

SQL 中 LEFT JOIN 的作用:解决查询数据丢失问题

原文地址: https://www.cveoy.top/t/topic/peSA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录