select b.brand,b.title,b.price from tb_item b where (select count(DISTINCT a.price) from tb_item a where b.brand = a.brand and b.price<=a.price)<=3 and b.brand is not null order by b.brand,b.price desc;
表结构是这样的: mysql> desc tb_item; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | cid | bigint(20) | NO | MUL | NULL | | | brand | varchar(50) | YES | | NULL | | | model | varchar(50) | YES | | NULL | | | title | varchar(100) | YES | | NULL | | | sell_point | varchar(500) | YES | | NULL | | | price | bigint(20) | YES | | NULL | | | num | int(11) | YES | | NULL | | | barcode | varchar(30) | YES | | NULL | | | image | varchar(500) | YES | | NULL | | | status | tinyint(4) | YES | | 2 | | | created | datetime | YES | | NULL | | | updated | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 13 rows in set (0.00 sec)