有供应商表a,商品表b 以下简称a,ba与b是一对多的关系(一条供应商对应多条商品)现在想一对一的提取
即所有的供应商都提取出来,但是每条供应商只提取一条商品记录对应起来就行了.一时转不过圈,不知应该如何写sql,请高手们指点下,谢谢!

解决方案 »

  1.   

    select a.*,b.*
    from a,(select 供应商ID,max(商品ID) as max商品ID from b group by 供应商ID) t1,b
    where a.供应商ID=t.供应商ID and t.max商品ID=b.商品ID
      

  2.   

    没有约束.随便取那条商品都行,只要是属于这个供应商提供的.
    精简化的表结构:
    a {
    sup_id,  //供应商编号,主键
    sup_name, //供应商名称
    }b {
    goods_id, //商品编号,主键
    sup_id,//所属的供应商编号
    goods_name,//商品名称
    }常规的关联结果是所有的商品都会出来,如何能保证同一个供应商下只关联出来一条商品记录?
      

  3.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)上面语句也可以换成等同的 INNER JOIN如下。
    select a.*,b.*
    from a inner join (select 供应商ID,max(商品ID) as max商品ID from b group by 供应商ID) t on a.供应商ID=t.供应商ID
    inner join b on t.max商品ID=b.商品ID
      

  4.   

    多谢 acmain , 应该能解决,我试下。
      

  5.   

    select 供应商.*,商品.*
    from 供应商,商品 where 商品.供应商编号=供应商.编号
    group by 供应商.编号不要奇怪,mysql里允许在select里出现没有group 和聚合的字段的。 
      

  6.   

    搞定! 多谢 acmain 指点!