查询以列出所有用户并首先在其上应用偏移条件,然后再应用其他过滤器
Query to list all users and apply offset condition on it first then other filters
通过使用以下查询,我得到了不需要的结果。
select *
from db_user
where full_name like 'Admin%'
order by date_created asc
OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY;
所需结果:
- 获取所有用户的列表,然后先在其上应用偏移条件
其他过滤器,例如(具有 'fullName' 和 orderBy 'desc')。
获得结果:
- 首先应用过滤器的所有用户列表('fullName'
和 orderBy 'desc') 然后应用偏移量。
如何安排查询流程以达到要求的结果?
你可以用row_number筛选出最近的记录,然后在外层查询full_name
上应用条件,排序和限制:
select top(10) *
from (
select d.*, row_number() over(order by date_created desc) rn
from db_user
) t
where rn > 1 and full_name like 'Admin%'
order by date_create desc
或者,使用 offset
:
select *
from (
select d.*, row_number() over(order by date_created desc) rn
from db_user
) t
where rn > 1 and full_name like 'Admin%'
order by date_create desc
offset 0 rows fetch next 10 rows only
您在找这样的东西吗?
select u.*
from (select u.*
from db_user
order by id asc
OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY
) u
where full_name like 'Admin%'
order by date_created asc ;
使用 offset
而不使用 order by
没有任何意义。但是这个似乎正是你所要求的。
通过使用以下查询,我得到了不需要的结果。
select *
from db_user
where full_name like 'Admin%'
order by date_created asc
OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY;
所需结果:
- 获取所有用户的列表,然后先在其上应用偏移条件 其他过滤器,例如(具有 'fullName' 和 orderBy 'desc')。
获得结果:
- 首先应用过滤器的所有用户列表('fullName' 和 orderBy 'desc') 然后应用偏移量。
如何安排查询流程以达到要求的结果?
你可以用row_number筛选出最近的记录,然后在外层查询full_name
上应用条件,排序和限制:
select top(10) *
from (
select d.*, row_number() over(order by date_created desc) rn
from db_user
) t
where rn > 1 and full_name like 'Admin%'
order by date_create desc
或者,使用 offset
:
select *
from (
select d.*, row_number() over(order by date_created desc) rn
from db_user
) t
where rn > 1 and full_name like 'Admin%'
order by date_create desc
offset 0 rows fetch next 10 rows only
您在找这样的东西吗?
select u.*
from (select u.*
from db_user
order by id asc
OFFSET 1 ROWS FETCH NEXT 10 ROWS ONLY
) u
where full_name like 'Admin%'
order by date_created asc ;
使用 offset
而不使用 order by
没有任何意义。但是这个似乎正是你所要求的。