我的两个表是这样的.
T1
字段1 
1
2
3T2
字段1    字段2
1        A
1        B
1        C
2        D
2        E
3        F
3        G我用下面的SQL语句查询
SELECT T1.字段1,T2.字段2 FROM T1 LEFT JOIN T2 ON T1.字段1=T2.字段1得到的结果是
字段1,字段2
1        A
1        B
1        C
2        D
2        E
3        F
3        G问题是我想得到下面的结果,能做到吗?字段1,字段2
1        A
2        D
3        F我的查询条件是根据T1来的字段的,所以一定要用到T1.

解决方案 »

  1.   

    SELECT T1.字段1,min(T2.字段2) as 字段2  FROM T1 LEFT JOIN T2 ON T1.字段1=T2.字段1
    group by T1.字段1
      

  2.   

    SELECT A.字段1,B.字段2 FROM T1 A INNER JOIN 
    ( SELECT 字段1,min(字段2) AS 字段2  FROM T2 GROUP BY 字段1 ) B ON A.字段1=B.字段1
      

  3.   

    TO:quanyi(长生天) AND ilik(煊烨※涅磐) T2.字段2 的值并不是排序的,我只是想拿出它的第一条记录,并不是要拿最小值,
    不好意思可能问题提得有点不清楚.如果T2是这样的:T2
    字段1    字段2
    1        G
    1        B
    1        C
    2        E
    2        A
    3        B
    3        G我想要的结果是这样的.字段1,字段2
    1        G
    2        E
    3        B
      

  4.   

    使用内联结 inner join
    SELECT T1.字段1,T2.字段2 FROM T1 LEFT inner JOIN T2 ON T1.字段1=T2.字段1
      

  5.   

    看过有人问这个问题的
    好像是面试题吗
    关注一下
    GOOD GOOD STADY
      

  6.   

    select t1.字段1,t2.字段2 from t1 join t2 on t1.字段1 = t2.字段2 group by t1.字段1
      

  7.   

    select * from (select RANK () over(PARTITION BY 字段1 order by 字段2) as rank, 字段1 ,字段2 from T2) as a where rank=1 and  字段1 in (select 字段1 from t1)
      

  8.   

    SQL SERVER 2005的写法
      

  9.   

    SELECT T1.字段1,min(T2.字段2) as 字段2  FROM T1 JOIN T2 ON T1.字段1=T2.字段1
    group by T1.字段1 having T1.字段1=1