package表的id对应package_product表的package_id,并且两者是一对多的关系,今天想筛选出package表所有id存在于package_product表的记录,第一个想到的就是join

select package.*,package_product.package_id from package join package_product
       on(package.id=package_product.package_id);
 
但是有一个问题,数据会重复,比如package_product表有3个相同的package_id就会查找出3条相同的package表记录,

加上distinct好像也没用


所以,又想到了子查询,select * from package where id in(select distinct package_id from package_product),虽然写起来简单,但是这条语句太耗性能了,查找6条记录要好几秒,最后找到了合适的方法

select * from package join (select distinct package_id from package_product) as package_product on(package.id=package_product.package_id);


Logo

更多推荐