如题:一条sql取出大于三、等于三、小于三的记录数以及包括它的商品信息,sql如下:
select p.id, p.goods_name, pc.min_rows, pc.eq_rows, pc.max_rows from product as p inner join (select _min.id, _min.min_rows, _eq.eq_rows, _max.max_rows from (select p.id, count(pc.star) as min_rows from product as p left join (select pid, star from product_comments where star < 3) as pc on p.id=pc.pid group by p.id) as _min inner join (select p.id, count(pc.star) as eq_rows from product as p left join (select pid, star from product_comments where star=3) as pc on p.id=pc.pid group by p.id) as _eq on _min.id=_eq.id inner join (select p.id, count(pc.star) as max_rows from product as p left join (select pid, star from product_comments where star > 3) as pc on p.id=pc.pid group by p.id) as _max on _eq.id=_max.id) as pc using(id);
类似地会输出如下类型的结果集:
+----+------------+----------+---------+----------+
| id | goods_name | min_rows | eq_rows | max_rows |
+----+------------+----------+---------+----------+
| 1 | xxxxxxxxx | 6 | 4 | 7 |
| 2 | xxxxx | 3 | 0 | 5 |
+----+------------+----------+---------+----------+