2017-07-31 39 views
1

我的表中有一個名爲iciphers_id的字段。每個iciphers_id在該表中有多個記錄。如何使用限制查詢獲取特定ID的多個記錄

我想獲取某些特定iciphers_id的記錄。以下查詢獲取以下ID的所有記錄。

SELECT * FROM MYTABLE WHERE iciphers_id IN (200,201,202) 

我想寫查詢來獲取所有記錄,這些具體的iciphers_id但10記錄每個iciphers_id。我曾嘗試

SELECT * FROM MYTABLE WHERE iciphers_id IN (200,201,202) LIMIT 10. 

這上面的查詢只返回10條記錄,我想10個記錄每個iciphers_id這是200201202。

注:我剛剛在上面的查詢中添加了三個iciphers_id,它們可以超過(百)個。

Iciphers id可以超過一百。也許我應該使用之間的查詢如where iciphers_id >= 200 AND Iciphers_id <= 300

+0

能超過3或將超過3個?什麼決定這個?它是不同的一切,它是增量等? – Matt

+0

@Asfandyar Khan表中每個iciphers_id存在多少條記錄? –

+0

它們可以是多個,單個iciphers_id'1010到100,000之間, –

回答

-1

你可以試試。

SELECT * 
    FROM 
    (SELECT * , 
        @iciphers_id_rank := IF(@current_iciphers_id = iciphers_id, @iciphers_id_rank + 1, 1) AS iciphers_id_rank, 
        @current_iciphers_id := iciphers_id 
     FROM MYTABLE WHERE iciphers_id IN (200,201,202) 
     ORDER BY iciphers_id ASC 
    ) temp 
    WHERE iciphers_id_rank >= 1 AND iciphers_id_rank <= 10 ; 
+0

不起作用!它總共獲得了30條記錄。 –

+0

我更新了答案,現在您可以嘗試,我認爲它會按照您的要求工作 –

+0

它不再工作,它在返回100k +記錄之前返回50,000多條記錄。我希望我的查詢只返回30條以上3條記錄iciphers_id –

-1
select 
    -- ids.iciphers_id, -- this is not necessary 
    TT.* 
from 
    ( select distinct iciphers_id 
     from MYTABLE 
     where iciphers_id > 200 and iciphers_id < 300 
    ) ids 
    cross apply 
    (
     select MT.* 
     from MYTABLE MT 
     where MT.iciphers_id = ids.iciphers_id 
     limit 10 
    ) TT 
+0

無效,我在'select top 10'中給出錯誤 –

+0

嘗試在「clausue」後刪除「limit 10」並刪除'top 10' –

+0

您有錯誤在你的SQL語法中;在查詢附近交叉應用... –

相關問題