SQL:
select * from emp as a where 3> (select count(*) from emp where deptno = a.deptno and sal < a.sal ) order by a.deptno ,a.sal
解析SQL:
3>…
目的是获取前三条数据,可以多次修改
emp where deptno = a.deptno
目的是确定分组字段
sal < a.sal
排序条件
天猫项目目sql代码:
SELECT * FROM
( SELECT
c.id,c.`name`,p.id AS pid,p.sub_title,p.promote_price,pi.id as piid
FROM t_category AS c
LEFT JOIN t_product AS p ON c.id = p.category_id
LEFT JOIN ( SELECT max( pi.id ) AS id,pi.product_id AS pid
FROM t_product_image pi
WHERE pi.type = 'type_single'
GROUP BY pi.product_id
) AS i ON i.pid = p.id
LEFT JOIN t_product_image pi ON pi.id = i.id ) s
WHERE 5 > (
SELECT count(*)
FROM
(SELECT c.id,c.`name`,p.id AS pid,p.sub_title,p.promote_price,pi.id as piid
FROM t_category AS c
LEFT JOIN t_product AS p ON c.id = p.category_id
LEFT JOIN (
SELECT max( pi.id ) AS id,pi.product_id AS pid
FROM
t_product_image pi
WHERE
pi.type = 'type_single'
GROUP BY
pi.product_id
) AS i ON i.pid = p.id
LEFT JOIN t_product_image pi ON pi.id = i.id
) a
WHERE
a.id = s.id
AND a.pid < s.pid
)
ORDER BY s.id,s.pid