如何在mysql中按限制顺序获取项目

如何在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

我有一个表项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'
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,如果它对你有效,那么你可以接受绿色勾选的答案: