2011-07-21 17 views
1

既に制限されているクエリを制限するにはどうすればよいですか?すでに限定されたクエリを制限するにはどうすればよいですか?

私は結果をページに分けていますが、私の場合、これもLIMIT(これは本当に他の方法がありますか...?)によって行われます。不可能である。明らかに、PHPでこれを(単純なコードで)どうやって行うことができるか考えているなら、それを投稿してください。

+0

結果セットをどのような理由で制限したいですか? SQLクエリ自体のLIMITを下げるのはなぜですか? –

+0

Bradのように、私はリソースを節約したい。 – Nisto

+0

あなたは行xを越えた行を照会しないことでリソースを節約します。PHPスクリプト内の結果セットを制限すると、既にmysqlリソースが使用されています。または私は間違っていますか? –

答えて

6

オフセットを使用する

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

オフセットの選択は、それはあなたのように聞こえる何

SELECT 
    ... 
    FROM 
     yourtable 
    LIMIT 
     $offset, $pagesize 
+0

これは私がしたいことではありません。これは、1ページの特定の量の結果を取り出すだけです。私がしたいことは、取り出されたすべてのものを制限することです。通常、あなたのようなクエリは10ページで10個の結果を取得します。私がしたいのは、結果が10ページ以下になるようにクエリを制限することです(結果を少なく取って)。 – Nisto

+0

最初に100行をフェッチしたいのですか?そのLIMIT 100'または 'LIMIT $ pagesize * $ pagecount' –

+0

しかし、結果をページに分割することはできません。あなたは、私のクエリは、各ページのために次のように見えます: 'LIMIT $ ResultsPerPage * $ CurrentPage、$ Offset'。 – Nisto

1

だろうこの

$offset = ($page-1) * $pagesize 

ような何かを行うことによって計算されるSelect Documentation

を見ます探しているのは改ページです。チュートリアルの推奨事項については、this related SO questionをご覧ください。

要するに、制限とオフセットをとり、そこからクエリを作成する関数を作成できるはずです。

+0

私はページネーションを探していません。すでに完了していますが、私は単にクエリを制限し、制限されたクエリをページに分割したいのです(そして、改ページは既に行われています)。 – Nisto

+0

制限を変更してみてはいかがですか?または最初にクエリでカウントを実行し、特定のしきい値を超えて戻った場合は、制限を変更して目的の制限を反映させますか?正確に何をしようとしているのか(例の助け!)、おそらく*なぜ*あなたがそれをやろうとしているのかということを明確にすれば、より良い答えを得るかもしれません。 – Shauna

関連する問題