mySQL查询中每个组的行数

mySQL查询中每个组的行数,mysql,sql,Mysql,Sql,我有以下疑问: SELECT ebq1.`idBUSINESS`, ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` FROM `elevated_business_queue` ebq1 GROUP BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` ORDER BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BI

我有以下疑问:

    SELECT ebq1.`idBUSINESS`, ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    FROM `elevated_business_queue` ebq1
    GROUP BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    ORDER BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` DESC
SELECT `idBUSINESS`, `KEYWORD_TEXT`, `CITY`, `BID_AMOUNT`, @rn:=@rn+1 AS `POSITION`
FROM (
    SELECT ebq1.`idBUSINESS`, ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    FROM `clearindia`.`elevated_business_queue` ebq1
    GROUP BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    ORDER BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` DESC LIMIT 10
) t1, (SELECT @rn:=0) t2;
我希望它返回每个关键字/城市组的每个ebq1.keyword\u文本、ebq1.city、ebq1.BID\u金额组的前10个出价

我尝试将查询限制为10,但它只返回10行-我希望每个组最多返回10行。有办法做到这一点吗

我还想为每个关键字/城市/出价返回出价的位置。我尝试使用以下查询:

    SELECT ebq1.`idBUSINESS`, ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    FROM `elevated_business_queue` ebq1
    GROUP BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    ORDER BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` DESC
SELECT `idBUSINESS`, `KEYWORD_TEXT`, `CITY`, `BID_AMOUNT`, @rn:=@rn+1 AS `POSITION`
FROM (
    SELECT ebq1.`idBUSINESS`, ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    FROM `clearindia`.`elevated_business_queue` ebq1
    GROUP BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT`
    ORDER BY ebq1.`KEYWORD_TEXT`, ebq1.`CITY`, ebq1.`BID_AMOUNT` DESC LIMIT 10
) t1, (SELECT @rn:=0) t2;
但它给我的位置从1到10忽略我的小组。我想在每个城市和关键字的每个组前10名出价返回的立场

此查询返回以下内容:

# idBUSINESS, KEYWORD_TEXT, CITY, BID_AMOUNT, POSITION
'5', '1', 'New York', '2.50', '1'
'7', '1', 'New York', '2.30', '2'
'1', '1', 'New York', '1.50', '3'
'7', '2', 'New Jersey', '3.50', '4'
'5', '2', 'New Jersey', '2.50', '5'
我希望它能返回:

# idBUSINESS, KEYWORD_TEXT, CITY, BID_AMOUNT, POSITION
'5', '1', 'New York', '2.50', '1'
'7', '1', 'New York', '2.30', '2'
'1', '1', 'New York', '1.50', '3'
'7', '2', 'New Jersey', '3.50', '1'
'5', '2', 'New Jersey', '2.50', '2'
试试这个

 Select * from (
  SELECT  @row_num :=       IF(@prev_value=o.CITY,@row_num+1,1) AS RowNumber
   ,o.idBUSINESS
   ,o.KEYWORD_TEXT
   ,o.CITY
 , o.BID_AMOUNT
   ,@prev_value := o.CITY
    FROM  elevated_business_queue o,
  (SELECT @row_num := 1) x,
  (SELECT @prev_value := '') y
     ORDER BY o.CITY, o.BID_AMOUNT DESC) as temp_tab
  Where 
  RowNumber <11

我不确定是否算作重复,但无论如何,请看这里:@amar have您的问题尚未解决?因为您已取消选中已接受的勾号