2012-02-21 13 views
1

私は同様の質問があることを知っていますが、私は何をしたいのかはまったく当てはまりません。mysqlは有効なn番目の倍数の結果を返す

次のようなクエリが返されると、結果は85となります。

SELECT * FROM tbl_name WHERE person = 'Tom'; 

同様のクエリがありますが、結果は168です。

SELECT * FROM tbl_name WHERE person = 'Bob'; 

私はちょうど私がトムの第一、第50結果の予想出力を持ちたいWHERE句でperson値を変更することにより

50の有効な倍数で結果を取得しようとしています。これは、2行の合計結果を意味します。

同様にBobは、1番目、50番目、100番目、150番目の結果を返していました。合計4行の結果です。

これはMySQLだけで可能ですか?

+0

"トムの第一の出力、第50回の結果は" 2行ということであることをしたい場合または50行? –

+0

これは、合計で2行を意味しています。それが50行であれば、そうでなければ興味深い問題ではありません;) – Tek

答えて

7

釘付け。異なる増分の50を変更します。これは、あなたが1,51,101(50回ごと)を望むことを意味していたと仮定します。

SELECT 
    returnTable.* 
FROM (
    SELECT 
     @rownum:[email protected]+1 AS rowNumber, 
     tbl_name.* 
    FROM forum_posts, (SELECT @rownum:=0) variableInit 
    WHERE tbl_name.person = 'Tom' 
) AS returnTable 
WHERE returnTable.rowNumber = 1 
OR (returnTable.rowNumber - 1) MOD 50 = 0; 

あなたが実際に1、50、100、150は、次の(取り外し-1 WHEREから)

SELECT 
    returnTable.* 
FROM (
    SELECT 
     @rownum:[email protected]+1 AS rowNumber, 
     tbl_name.* 
    FROM forum_posts, (SELECT @rownum:=0) variableInit 
    WHERE tbl_name.person = 'Tom' 
) AS returnTable 
WHERE returnTable.rowNumber = 1 
OR returnTable.rowNumber MOD 50 = 0; 
+0

非常に、非常に良い。あなたの努力のために本当にありがとう!これは私の頭の中で自分自身をしようとする方法でした。 :D – Tek

+1

午前中に1:25ということを知って欲しいと思います;)少し眠りについた後、この楽しいものがポップアップしました:D –

+0

私は持っていたカスタムクエリでそれを実装しました。魅力のように働いた。もう一度、この質問をチェックするために1秒以上滞在していただきありがとうございます;)非常に感謝しています! – Tek

関連する問題