两张表left join  连表查询  结果如aId,bId1001 100011001 100021002 100031002 100041003 100051003 10006现在想要aId不重复的记录等于某个值 如2,那么结果就只取前四条,sql可以怎么写啊,求教

解决方案 »

  1.   

    A表与B表的关系是1对多,left join出来之后做分页,但是分页是按照A表的数据来分页,而不是笛卡尔集合出来的数据进行分页
      

  2.   

    使用order by进行排序,然后使用limit 4就可以了
      

  3.   

    A表与B表的关系是1对多,left join出来之后做分页,但是分页是按照A表的数据来分页,而不是笛卡尔集合出来的数据进行分页这种以A表为基准的分页情况适合子查询,不适应left join,因为left join后为了去重复再 group by A.c1,A.c2,A.c3...还不如子查询呢,如下子查询。select a.*, (select b.column_name from B b where b.aid=a.aid) from A a;
      

  4.   

    A表与B表的关系是1对多,left join出来之后做分页,但是分页是按照A表的数据来分页,而不是笛卡尔集合出来的数据进行分页这种以A表为基准的分页情况适合子查询,不适应left join,因为left join后为了去重复再 group by A.c1,A.c2,A.c3...还不如子查询呢,如下子查询。select a.*, (select b.column_name from B b where b.aid=a.aid limit 1) from A a;
      

  5.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。