我有一个SQL查询,它运行在多个表上以返回一些列,并使用LIMIT
和OFFSET
进行分页。
我还有第二个SQL查询,它与第一个查询完全相同,只是它返回上一个查询的count(*)
而没有 LIMIT
和{{1运营商。
我可以在一个SQL语句中执行此操作吗?我可以根据自己的情况进行改进吗?
两个查询的示例:
OFFSET
SELECT a.col1, b.col4, c.col5 FROM a, b, c LIMIT 20 OFFSET 5
答案 0 :(得分: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, c
。
答案 1 :(得分: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