我有2张表
表A:
A_ID ,AA_ID
1      1
1      2  
1      3
1      5   
1      7
2      11
2      16
2      17
2      20
2      21
2      30
2      40表B
A_ID COUNT
1     3     /*取A表中A_ID为1,3条数据*/
2     4     /*取A表中A_ID为2,4条数据*/
表B中A_ID来源于表A,COUNT字段表示取的条数,以上有注释。如以上取出来的结果就是:
A_ID ,AA_ID
1      1
1      2  
1      3
2      11
2      16
2      17
2      20请问SQL如何写?SQL,存储过程都可以,请赐教!

解决方案 »

  1.   

    select 
      a.* 
    from 
      a ,b
    where 
      a.a_id=b.a_id 
    and 
      (select count(1) from a t where a.a_id=t.a_id and t.aa_id<=a.aa_id)<=b.`count`
      

  2.   

    假设AA_ID按小->大顺序:
    select a1.* from (
    SELECT a.A_ID,a.AA_ID,count(b.a_id) as ma from ttn a left join ttn b on a.A_ID=b.A_ID and a.AA_ID>=b.AA_ID
    group by a.A_ID,a.AA_ID) a1
    inner join ttn1 c on a1.ma<=c.COUNT and a1.A_ID=c.A_ID如果没有顺序,则增加自增字段ID,思路如上述是一致的