如何按 mysql 中的限制顺序获取项目
How to get Items in order with limit in mysql
我有一个tableItem ( id, itemType)
。 itemType
可以是 1-5。
我想使用 mysql 检索每种类型的 2 个项目。
我试过了
select * from `item` ORDER BY `itemType` limit 2
这让我按类型订购了 2 件商品,但我想要每种类型的 2 件商品。
您可以使用下面的查询,即使我没有用数据检查它,因为我没有样本数据,所以如果您遇到任何问题,那么您可以创建一个 sqlfiddle,这样我就可以将查询自定义为每个你在#sql
SELECT x.id,x.type1 as 'Type'
FROM (SELECT t.*,
CASE
WHEN @type != t.type THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@type := t.type AS 'type1'
FROM item t
JOIN (SELECT @rownum := NULL, @type := '') r
ORDER BY t.type,t.id) X
WHERE x.rank<=2;
您甚至可以根据最高价格或任何其他字段进行排序。
我有一个tableItem ( id, itemType)
。 itemType
可以是 1-5。
我想使用 mysql 检索每种类型的 2 个项目。
我试过了
select * from `item` ORDER BY `itemType` limit 2
这让我按类型订购了 2 件商品,但我想要每种类型的 2 件商品。
您可以使用下面的查询,即使我没有用数据检查它,因为我没有样本数据,所以如果您遇到任何问题,那么您可以创建一个 sqlfiddle,这样我就可以将查询自定义为每个你在#sql
SELECT x.id,x.type1 as 'Type'
FROM (SELECT t.*,
CASE
WHEN @type != t.type THEN @rownum := 1
ELSE @rownum := @rownum + 1
END AS rank,
@type := t.type AS 'type1'
FROM item t
JOIN (SELECT @rownum := NULL, @type := '') r
ORDER BY t.type,t.id) X
WHERE x.rank<=2;
您甚至可以根据最高价格或任何其他字段进行排序。