环境  Mac 
安装方式 brew 
版本 10.1.26   10.2.x
出现的问题:
                  现在有2张表  A表 与B表
                  A表数据有1000条  B表有200条
                  select * from A left join B on  A.id = B.a_id
                  结果只能查到200条数据.才发现 不管是 left join 还是right join  还是inner join 都是一样的结果.
                  将数据库恢复到服务器上后查询正常. 求大神赐教.是怎么回事?

解决方案 »

  1.   

    出问题的地方select * from A看看
      

  2.   

    这个没有问题.select * from A 是1000条没错. select * from B 是200条  
      

  3.   

    楼主是否加要WHERE字句? 建议贴出实际的语句。
      

  4.   

    没有where条件 实际语句太多了.稍后贴出来
      

  5.   


    SELECT  太多了 略
    FROM `b_archives` `arc`
    LEFT JOIN `t_system_param` `edu` ON `arc`.`education` = `edu`.`id`
    LEFT JOIN `t_system_param` `sm` ON `arc`.`studentMajor` = `sm`.`id`
    LEFT JOIN `t_system_param` `st` ON `arc`.`studentType` = `st`.`id`
    LEFT JOIN `t_system_param` `ss` ON `arc`.`studentState` = `ss`.`id`
    LEFT JOIN `t_system_param` `cl` ON `arc`.`chineseLevel` = `cl`.`id`
    LEFT JOIN `t_system_param` ON `arc`.`fundSource` = `t_system_param`.`id`
    LEFT JOIN `b_grades` ON `arc`.`gradesID` = `b_grades`.`id`
    LEFT JOIN `b_college` ON `b_grades`.`college` = `b_college`.`id`
    LEFT JOIN `v_dormitory` ON `v_dormitory`.`archivesID` = `arc`.`id`问题基本确定位置了.  其实去掉 v_dormitory 查询结果正常. v_dormitory 是一个视图 SQL如下 :select 略 
    from `b_dormitory` 
    where 
    `b_dormitory`.`id`  in (select max(`b_dormitory`.`id`) from `b_dormitory` group by `b_dormitory`.`archivesID`)b_dormitory 表中针对一个archivesID 有多条数据. 只取b_dormitory.id 最大的.  故此增加了个中间表来确定每个archivesID只对应唯一一个b_dormitory 疑问:
            一定得加中间表吗? 为什么之前在服务器上没有这样的情况? 在本机就出现了.