2013-08-30 22 views
1

下面是我的查詢的輸出電流:SELECT vans,icollaborate_id FROM mytable;限制結果的數量接收基於列值組不組由

+==========+=====================+ 
| vans | icollaborate_id | 
+==========+=====================+ 
| sachin | 10    | 
| cricket | 10    | 
| chess | 10    | 
| male  | 11    | 
| 31-40 | 11    | 
| sachin | 11    | 
| female | 12    | 
| tennis | 12    | 
| 21-30 | 12    | 
+----------+---------------------+ 

現在我想產生它返回的輸出相同,但有限制的結果。 例如,如果用戶指定limit=2然後輸出應該如下:

與限位2

+==========+=====================+ 
| vans | icollaborate_id | 
+==========+=====================+ 
| sachin | 10    | 
| cricket | 10    | 
| chess | 10    | 
| male  | 11    | 
| 31-40 | 11    | 
| sachin | 11    | 
+----------+---------------------+ 

預期輸出與限3

+==========+=====================+ 
| vans | icollaborate_id | 
+==========+=====================+ 
| sachin | 10    | 
| cricket | 10    | 
| chess | 10    | 
| male  | 11    | 
| 31-40 | 11    | 
| sachin | 11    | 
| female | 12    | 
| tennis | 12    | 
| 21-30 | 12    | 
+----------+---------------------+ 

請告知預期輸出。

+2

你能提供一些樣品的結果,以澄清你想要什麼? –

+0

我需要統計icollaborate_id的組爲1記錄的例子10是一個計數11是第二個計數 –

回答

0

嘗試這個

SELECT vans,icollaborate_id FROM table_name WHERE icollaborate_id IN(SELECT * FROM (SELECT DISTINCT icollaborate_id FROM table_name LIMIT 3) as t);

0

您可以使用DISTINCT查詢

SELECT DISTINCT icollaborate_id FROM table_name的WHERE icollaborate_id = '10' ;

0

該版本的MySQL還不支持 'LIMIT & IN/ALL/ANY/SOME子查詢'

下面我的回答是無效的,這要歸功於戈登·利諾夫指出了這一點。

我相信你正在尋找(如果你只想要1個查詢)是這樣的:

SELECT 
    vans, icollaborate_id 
FROM 
    mytable 
WHERE icollaborate_id in 
    (
     SELECT distinct t2.icollaborate_id FROM mytable t2 
       ORDER BY t2.icollaborate_id LIMIT YOUR_LIMIT 
    ) 

子選擇確定它應該有多少個不同的值來看,則主查詢選擇所有包含的行那些價值。 這個查詢可能相當不合適,您可能需要考慮這一點。

+0

Ooops,你不能在MySQL中使用'in'在子查詢中使用'limit'。 –

1

您可以用join做到這一點:

SELECT vans, icollaborate_id 
FROM t join 
    (select distinct icollaborate_id 
     from t 
     order by icollaborate_id 
     limit 3 
    ) tokeep 
    on t.icollaborate_id = tokeep.icollaborate_id 
order by icollaborate_id; 

編輯:

順便說一句,有可能是下面的查詢你想要做什麼:

select icollaborate_id, group_concat(vans) 
from t 
group by icollaborate_id 
limit 3; 

這使所有vans位於逗號分隔列表中的單個行上。

+0

感謝您的回答,這對我非常有用。 –