sql query - how to apply limit within group by

后端 未结 5 1208
生来不讨喜
生来不讨喜 2020-12-09 17:03

I have a table named t1 with following fields: ROWID, CID, PID, Score, SortKey

it has the following data:

1, C1, P1, 10, 1
2, C1, P2, 20, 2
3, C1, P3         


        
5条回答
  •  情书的邮戳
    2020-12-09 17:57

    In MySQL:

    SELECT  l.*
    FROM    (
            SELECT  cid,
                    COALESCE(
                    (
                    SELECT  id
                    FROM    mytable li
                    WHERE   li.cid = dlo.cid
                            AND li.score >= 20
                    ORDER BY
                            li.cid, li.id
                    LIMIT 1, 1
                    ), CAST(0xFFFFFFFF AS DECIMAL)) AS mid
            FROM    (
                    SELECT  DISTINCT cid
                    FROM    mytable dl
                    ) dlo
            ) lo, mytable l
    WHERE   l.cid >= lo.cid
            AND l.cid <= lo.cid
            AND l.id <= lo.mid
            AND l.score >= 20
    

提交回复
热议问题