具有总记录和分页的单个 SQL 查询
Posted
技术标签:
【中文标题】具有总记录和分页的单个 SQL 查询【英文标题】:single SQL query with total records and pagination 【发布时间】:2015-03-28 23:56:04 【问题描述】:我有一个基于搜索参数提取记录的查询,我希望查询返回总记录以及基于开始和结束的分页,我必须运行两个查询还是有更直观的方法来在单个查询中执行。
SELECT * FROM page WHERE article_id = ? AND content like '%@%' //replacing @ with keyword
编辑: 寻找标准 SQL(实际使用 WebSQL)
【问题讨论】:
很大程度上取决于您使用的 DBMS 我正在使用 websql,所以非常想留在标准 sql 中 没有“标准”的结果分页方式 我很确定 SQLLite 是任何实现 WebSQL 的人使用的唯一数据库服务器。 SQLLite 确实有一个可以使用的 LIMIT 和 OFFSET。 SO上有很多线程可以满足您的需求:***.com/questions/14468586/… 【参考方案1】:此查询将为每一行返回记录总数和实际页面(考虑到每页有 5 行)
select *, count(*) as total, (seq - MOD(seq, 5)) / 5
from (select id, row_number() over(order by id) as seq
from page) a
join page b on b.id = a.id;
请注意,此查询仅适用于 Oracle
,因为您没有指定您的 DBMS
,这是我自己决定的,因此您可能需要进行编辑。
【讨论】:
实际上我确实提到了一些cmets,正在寻找标准sql,编辑我的问题,你能帮我采纳这个***.com/questions/19378892/… @user3610227:那个是“标准SQL”(可能mod()
除外)
我不能,它有一些我不知道的功能,例如over
和row_number
,我正在寻找一个基于 websql 的解决方案,可能请,错误could not prepare statement (1 near "(": syntax error)"
【参考方案2】:
尝试使用子查询
count * from table where (select .....)
【讨论】:
谢谢,我找到了一个链接,但目前无法理解,请您帮忙***.com/questions/19378892/…以上是关于具有总记录和分页的单个 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章