0

我想在一个数据库中的一个选择查询中内联超过 3 个表,所有这些表都将 rm_id 作为一个公共列,但我想在一个 sql 查询中显示所有表的行是否有可能,如果是这样的话,我会真诚地请求你提供一些代码

select * from 
        bk_det inner join
        bk_rep inner join
        bk_sec inner join
        mut_det inner join
        rm_det inner join
        soil_det 
on
          bk_det.rm_id =   bk_rep.rm_id =  bk_sec.rm_id =  mut_det.rm_id = rm_det.rm_id = soil_det.rm_id
4

2 回答 2

5

每个内部连接都需要一个 on 子句。例如

select * from a 
inner join b on a.id = b.id 
inner join c on b.id = c.id
于 2012-12-29T14:26:11.297 回答
2

您缺少ON每个连接的子句:

select * 
from bk_det 
inner join bk_rep 
  on bk_det.rm_id =  bk_rep.rm_id
inner join bk_sec 
  on bk_rep.rm_id = bk_sec.rm_id
inner join mut_det 
  on bk_sec.rm_id =  mut_det.rm_id
inner join rm_det 
  on mut_det.rm_id = rm_det.rm_id
inner join soil_det 
    on rm_det.rm_id = soil_det.rm_id

注意:您必须检查连接条件列名,因为我不知道您的表结构

如果您在学习连接语法方面需要帮助,这里是对连接的一个很好的可视化解释

由于您使用的是,如果每个表中都存在,INNER JOIN则这将返回记录。rm_id

您可能需要使用LEFT JOIN

select * 
from bk_det 
left join bk_rep 
  on bk_det.rm_id =  bk_rep.rm_id
left join bk_sec 
  on bk_rep.rm_id = bk_sec.rm_id
left join mut_det 
  on bk_sec.rm_id =  mut_det.rm_id
left join rm_det 
  on mut_det.rm_id = rm_det.rm_id
left join soil_det 
    on rm_det.rm_id = soil_det.rm_id
于 2012-12-29T14:27:12.377 回答