表 A 
ID  
----- 
1      
2      
3      
4      
5      
6      
7      
表 B 
ID    A_ID    IDX
----------------- 
1      1       2
2      7       2
3      6       1 
4      2       2 
5      2       1  
6      5       1 
7      1       1 
8      7       1 
9      2       3 
表C 
A_ID  B_ID 
------------ 
1      7 
2      5 
5      6  
6      3 
7      8 根据A,B如何得到C (B的IDX为条件)
在下初学,谢过诸位上午的问题http://topic.csdn.net/u/20090219/09/f187c510-62a3-4d5d-bdb6-0ab67a639c0c.html

解决方案 »

  1.   

    create table A (ID int)
    insert A select 1      
    insert A select 2      
    insert A select 3      
    insert A select 4      
    insert A select 5      
    insert A select 6      
    insert A select 7      
    create table B (ID int,A_ID int,IDX int)
    insert B select 1,1,2 
    insert B select 2,7,2 
    insert B select 3,6,1 
    insert B select 4,2,2 
    insert B select 5,2,1  
    insert B select 6,5,1 
    insert B select 7,1,1 
    insert B select 8,7,1 
    insert B select 9,2,3 SELECT A_ID,MAX(ID) AS B_ID FROM B WHERE IDX>0 GROUP BY A_IDDROP TABLE A
    DROP TABLE B
    ------------------------
    1 7
    2 9
    5 6
    6 3
    7 8
      

  2.   


    感谢回复,不过有点不对,我是以IDX为条件,并不是取B表的ID最大值,也就是说IDX=1, 所以得到的结果也就不对了
      

  3.   

    75638怎么楼上的是79638 我是初学 看不明白select A.ID as A_ID,B.ID as B_ID 
    from A a,B b
    where a.ID = b.A_Id
    and b.IDX = 1
    order by a.ID
      

  4.   

    select A_ID,ID from 表B group by A_ID having IDX=1
      

  5.   


    不好意思,可能我没说明白,其实表B中还有许多A中没有的记录,要根据A的ID来取值
      

  6.   

    SELECT 表A.ID A_ID, 表B.ID B_ID 
     FROM 表A, 表B 
    WHERE  表B.IDX =1 
         AND 表A.ID = 表B.A_ID
    ORDER BY 表A.ID