CREATE TABLE `t_integral_product` (
`Fid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Fproduct_name` varchar(50) NOT NULL DEFAULT '' COMMENT '商品名称',
`Fclass_id` smallint(4) NOT NULL DEFAULT '1' COMMENT '积分商品分类,1表示实物,2表示虚拟',
`Fpx` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '商品排序',
PRIMARY KEY (`Fid`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='积分商品管理';
经常遇到一个表,有多个类别,每个类别下面又有多条记录的情况,要求取出每个类别下面的三条记录。
数据库;
SELECT
p.*
FROM
t_integral_product AS p,
(SELECT
GROUP_CONCAT(Fid order by Fpx asc) AS ids
FROM
t_integral_product
GROUP BY Fclass_id) AS b
WHERE
FIND_IN_SET(p.Fid, b.ids) BETWEEN 1 AND 3;
根据Fpx字段正序排序,每个class_id下 取出3条数据,完成查询。