2016-12-11 5 views
0

最初は貧弱な英語のために申し訳ありません!私は構造各行の後に条件を指定して行を選択する

id | uid | uam(user after me) | plan 
------------------------------------- 
1 | 4 |  4   | 1 
------------------------------------- 
2 | 4 |  3   | 2 
------------------------------------- 
3 | 4 |  1   | 2 
------------------------------------- 
4 | 4 |  9   | 1 
------------------------------------- 
5 | 4 |  6   | 1 
------------------------------------- 
6 | 4 |  2   | 2 
------------------------------------- 
7 | 4 |  1   | 1 
------------------------------------- 
8 | 4 |  3   | 2 
------------------------------------- 

以下で> 5000多くのレコードを持つテーブルを持っている今、私は条件

選択行UAM(私の後にユーザー)< = count行/場合は、以下で、この表から選択したい 2この行の後に同じ計画をします。言い換えれば、uamの数に達すると、ユーザーは同じ計画とユーザー数を持つことが望まれます。私はCodeIgniterのアクティブなレコードをSQLまたはより良いでそれを行うことができますどのように2、3

:?この例の表は、戻りのIDでなければなりませんため

助けてくれてありがとう:)

答えて

1

各レコードについて、後続のレコードがその特定のレコードのuam以上の合計になるかどうかを確認する必要があります。あなたはこれを達成することができますEXISTSの助けを借りて

SELECT 
* 
FROM uamtable A 
WHERE EXISTS (
    SELECT 
    1 
    FROM uamtable B 
    WHERE A.ID < B.ID AND A.plan = B.plan 
    HAVING COUNT(*) >= A.uam 
) 

注:

A.ID < B.ID制約が唯一の後続のレコードは、同じプランを持つカウントされることを強制します。

SEE DEMO

+0

おかげで、私は制限を追加し、この場合、改ページの制限を追加したい場合は? – user3243573

+1

'EXISTS'ブロックの後に' AID順 'を追加してください。 'LIMIT 1'のような制限を追加してください。 – 1000111

+1

[** demo **](http://sqlfiddle.com/#!9/71e3f/ 4/0)それの – 1000111