表a (id ,name),values(1,zhou)
表b(name,sex),values(zhou,nan),values(zhou,gay)
我想得到这样的结果 就是表a的name = 表b的name,然后查出此时的表b的sex,但是这样写出的结果有可能不止一个,我只想要一个,不能用top1因为表a里的数据不止一行。
下面是我这样的想法,可是会报错,请教,急
select * from a inner join (select top 1 * from b)as b on a.name = b.name

解决方案 »

  1.   

    把表b group by 下,找其中一条 再与a表连接 
      

  2.   

    select * from a inner join (select top 1 * from b order by name )as b on a.name = b.name
      

  3.   


    表设计问题表b的name 最好对应的是表a的id,就不会有问题了..
      

  4.   

    就是如果a里是1,zhou;2,sun
    表b为 zhou,gay;zhou,nan;sun,nan;sun,nv
    直接inner join
    查处这样的结果 1,zhou,nan
                        1,zhou,gay
                        2,sun,nan
                        2,sun,nv
      时 我只想要
    1,zhou,nan
    2,sun,nv
      

  5.   

    Name是我随便取的列名,实际中列名不会相同的,你们只管怎么实现这个功能,不要想别的
      

  6.   

    select * from (
    select a.name,b.sex
    ,row_number() over(partition by a.name order by a.name) as [order]
     from a,b where a.name=b.name
    ) T
    where [order]<2
    试一下!