sql - 如何避免这种嵌套查询
问题描述
我有一张category
桌子,需要为它做分页。我正在使用 JSF,并在 XML 中查询。有什么办法可以更好地优化这个查询。
SELECT
*
FROM
(
SELECT
categories.*,
ROWNUM rn
FROM
(
SELECT
*
FROM
(
SELECT
*
FROM
categories
WHERE
name LIKE 'FAMILY%'
ORDER BY
id
)
WHERE
ROWNUM < 21
) categories
)
WHERE
rn > 10;
解决方案
在数据库版本 12 上,有可用的偏移和获取功能,因此您的查询可能如下所示
SELECT *
FROM categories
WHERE name LIKE 'FAMILY%'
ORDER BY id
OFFSET 10 rows -- skips first 10 rows of the result
FETCH 11 rows only;
请试试那个
可以使用以下查询检查数据库版本
select * from v$version;
推荐阅读
- angular - 如何使用带角度的 octobercms
- perforce - 在 perforce 中,如何删除指向目录的符号链接并在同一目录中添加文件?
- python - 打开一个JS文件,用Python编辑一行
- javascript - 如何从数组Javascript中的最后一个元素中删除空格
- android - PreferenceFragmentCompat 的 iconSpaceReserved 默认为 true
- rest - 使用过期授权令牌请求的公开可用 api 资源的正确行为
- php - 如何避免mysql查询中的like语句为空
- symfony - VueJS - 如何在没有 vue-fontawesome 的情况下导入 import fontawesome-free 5?
- java - 如何将 CDATA 添加到 xml
- python - 处理只读用户输入的面向对象的方式