あなたはこの問題を複雑にしていると思います。私は2つのクエリを使用することに問題は見られません。総記事を取得する
まずクエリ(私はあなたがテーブル全体で合計をしたいと仮定しています):
SELECT COUNT(*) AS total FROM posts;
そして第二に、あなたの記事を照会する:
SELECT * FROM posts LIMIT 0, 5
理由は、複数のクエリを使用してデータを取得することは、特に意味がある場合は、必ずしも悪いことではありません。
副問合せを使用して追加の列として追加する場合は、各行に合計がありますが、基本的には2つの問合せが実行されます(または、すべての行に対してサブクエリが実行されます。覚えていないのですか?)
また、クエリの複雑さによっては、いくつかのクエリが間違った合計カウントを返すため、より柔軟にカウントを取得できます。そして、正確な合計を取得し、正しく改ページできるように、カウントクエリを変更する必要があるかもしれません。
たとえば、1対多問合せの場合、投稿とコメントを取得したいとします。その投稿のコメントごとに投稿が重複するため、間違ったカウントを取得します。
略称例:だから
post_id | comment_id
1 | 1
1 | 2
2 | 3
3 | 4
3 | 5
はそれを正しく行うには、まず、全ポスト取得するには、次のクエリを実行する必要があるだろう:
SELECT COUNT(*) AS total FROM posts;
をそして、あなたが実行する必要があるでしょう:
SELECT id FROM posts limit 0, 5;
そして最後に、あなたが実行したい:
select p.id, c.id from posts p left join comments c on c.post_id = p.id where id in(id list from above query)
明らかに、あなたのクエリは上記の問題に遭遇しません。しかし、私は単なる別のクエリで総カウントを得ることが良い理由を説明しようとしています。
PHPを使用している場合は、mysql_num_rowsを使用しないでください。 – hjpotter92
@ hjpotter92しかし、それはOPの「トータル」が何であるかによって異なります。現在選択されている合計( 'mysql_num_rows'は正常です)またはテーブル全体の行数です。 –
良い点、@Michal。私は答えの両方のケースに取り組んだ。 –