我正在尝试选择行where
条件并且需要分页。所以我添加了Fetch
with offset
[使其动态] 子句,但随后它给出了此错误:
ORA-00933: SQL 命令未正确结束 位置: 414
我的查询:
SELECT
up.NAME upozilaName_bn,
up.id upozila,
dis.NAME districtName_bn,
dis.id district,
dv.NAME divisionName_bn,
dv.id division,
w.COUNTER_TYPE, w.COUNTER_ID,
w.STATUS
FROM X w
left join Y up
ON w.UPOZILA = up.ID
left JOIN Z dis
ON w.DISTRICT = dis.id
left join P dv
ON w.DIVISION = dv.ID
where 1=1 order by upozilaName_bn asc OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY;
Without FFSET 1 ROWS FETCH NEXT 10 ROWS ONLY
这个,没关系!
我搜索了该错误:933
,但没有找到帮助。
甲骨文版本:11.2g
OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY
从 Oracle 12c 开始可用。
相反,您需要执行查询并对数据进行排序;然后为有序行生成行号;最后过滤这些行号。这些步骤需要在嵌套子查询中以正确的顺序进行:
SELECT *
FROM (
SELECT t.*,
ROWNUM AS rn
FROM (
SELECT up.NAME AS upozilaName_bn,
up.id AS upozila,
dis.NAME AS districtName_bn,
dis.id AS district,
dv.NAME AS divisionName_bn,
dv.id AS division,
w.COUNTER_TYPE,
w.COUNTER_ID,
w.STATUS
FROM X w
left join Y up ON w.UPOZILA = up.ID
left JOIN Z dis ON w.DISTRICT = dis.id
left join P dv ON w.DIVISION = dv.ID
order by upozilaName_bn asc
) T
)
WHERE rn BETWEEN 2 AND 11;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)