这个情况,是因为通过 inner join 查询,导致查询的结果因外表没有数据而导致主表数据查询不出来。
可以使用 left join 进行多表查询,从表没有数据时,主表也可以查询出数据来。
如下 SQL:
select * from table_a as a left join table_b as b on a.id = b.a_id
left join 是以 table_a 表的记录为基础,左表(即 table_a 表);table_b 可以看成右表(即 table_b 表)。
换句话说,左表(主表)的记录将会全部表示出来,而右表(从表)只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL。
而 inner join 和 left join 不相同,它只会显示两个表中符合条件的行,而不符合的不显示出来。