建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)上面语句也可以换成等同的 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
多谢 acmain , 应该能解决,我试下。
select 供应商.*,商品.* from 供应商,商品 where 商品.供应商编号=供应商.编号 group by 供应商.编号不要奇怪,mysql里允许在select里出现没有group 和聚合的字段的。
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
精简化的表结构:
a {
sup_id, //供应商编号,主键
sup_name, //供应商名称
}b {
goods_id, //商品编号,主键
sup_id,//所属的供应商编号
goods_name,//商品名称
}常规的关联结果是所有的商品都会出来,如何能保证同一个供应商下只关联出来一条商品记录?
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
from 供应商,商品 where 商品.供应商编号=供应商.编号
group by 供应商.编号不要奇怪,mysql里允许在select里出现没有group 和聚合的字段的。