如何在mysql中按限制顺序获取项目
我有一个表项id,itemType。itemType可以是1-5 我想使用mysql检索每种类型的2个项目 我试过了如何在mysql中按限制顺序获取项目,mysql,sql,sql-order-by,mysql-variables,Mysql,Sql,Sql Order By,Mysql Variables,我有一个表项id,itemType。itemType可以是1-5 我想使用mysql检索每种类型的2个项目 我试过了 select * from `item` ORDER BY `itemType` limit 2 这给了我2个项目,按类型排序,但我想每种类型2个项目 您可以使用下面的查询,即使我没有用数据检查它,因为我没有样本数据,所以如果您遇到任何问题,那么您可以创建一个SQLFIDLE,以便我可以根据您在sql中的情况自定义查询 SELECT x.id,x.type1 as 'Type
select * from `item` ORDER BY `itemType` limit 2
这给了我2个项目,按类型排序,但我想每种类型2个项目
您可以使用下面的查询,即使我没有用数据检查它,因为我没有样本数据,所以如果您遇到任何问题,那么您可以创建一个SQLFIDLE,以便我可以根据您在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;
甚至您也可以基于最高价格或任何其他字段进行订购。您可以使用order by columnname Limit这篇文章提供了帮助。谢谢你的建议,我下次再做。是的,这个博客也展示了你是如何做到这一点的,以及你为什么在这里发布你的问题。我在发布问题后一直在搜索。现在,像我这样的人也面临同样的问题,可以使用这个博客。我添加了SqlFiddle,如果它对你有效,那么你可以接受绿色勾选的答案: