1

LIMIT複数のテーブルで実行され、いくつかの列と用途を返し、ページネーションを行う SQL クエリがありますOFFSET

また、and演算子なしcount(*)で前のクエリのを返すことを除いて、最初のクエリとまったく同じである 2 番目の SQL クエリもあります。LIMITOFFSET

これを 1 つの SQL ステートメントで実行することは可能ですか? 持っているものを改善できますか?

両方のクエリの例:

  1. SELECT a.col1, b.col4, c.col5 FROM a, b, c LIMIT 20 OFFSET 5
  2. SELECT count(*) FROM (SELECT a.col1, b.col4, c.col5 FROM a, b, c) t
4

2 に答える 2

3
SELECT a.col1, 
       b.col4, 
       c.col5,
       count(*) over () as total_count
FROM a
  JOIN b ON ..
  JOIN c ON ...
LIMIT 20 OFFSET 5

FROM a, b, c3 つのテーブル間の(おそらく) 不適切な結合を適切な結合に置き換えたことに注意してください。

于 2013-10-05T11:37:48.527 に答える
1
with s as (
    select a.col1, b.col4, c.col5
    from a, b, c
), c as (
    select count(*) as c
    from s
)
select col1, col4, col5, (select c from c) as _count
from s
limit 20 offset 5
于 2013-10-05T11:41:16.597 に答える