如何查询使用限制获取特定ID的多个记录

时间:2017-07-31 12:54:27

标签: mysql

我的表中有一个名为iciphers_id的字段。每个iciphers_id在该表中都有多条记录。

我想获取某些特定iciphers_id的记录。以下查询获取以下ID的所有记录。

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

我想编写查询以获取特定iciphers_id的所有记录,但每个iciphers_id只记录10条记录。我试过了

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

以上查询只返回10条记录,我希望每条iciphers_id得到10条记录,即200,201,202。

注意:我刚刚在上面的查询中添加了三个iciphers_id,它们可以超过那个(数百个)。

Iciphers id可以超过百。也许我应该在查询中使用where iciphers_id >= 200 AND Iciphers_id <= 300

2 个答案:

答案 0 :(得分:-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 ;

答案 1 :(得分:-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