2014-02-28 93 views
0

我有以下查詢:行計數在MySQL查詢

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 

我想它返回前10名的出價爲每個關鍵字/城市羣(每一個ebq1 KEYWORD_TEXT,ebq1 CITY,ebq1。 BID_AMOUNT組)

我試着在查詢上放置一個限制10,但它只是返回10行 - 我想每個組最多返回10行。有沒有辦法做到這一點?

我也想申辦的位置爲每一個關鍵字/城市/投標返回。我嘗試使用以下查詢:

SELECT `idBUSINESS`, `KEYWORD_TEXT`, `CITY`, `BID_AMOUNT`, @rn:[email protected]+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' 
+0

我不能確定是否算作重複,但在任何情況下,看看這裏:http://stackoverflow.com/questions/2026956/want-row-number-on-group-of-column-in-my-sql –

回答

1

試試這個

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 
+0

@amar有y我們的問題還沒有解決?因爲你沒有選中接受的勾號 –