我想跳过前5条记录,然后选择10条记录
表email
中有一列user
。在这里,我尝试使用此查询
user
中选择前10个唯一行
select DISTINCT TOP 10 email from user
现在我试图从跳过前5个记录的表中选择前10个唯一行
select DISTINCT SKIP 5 TOP 10 email from user
未完成并返回错误..任何人都可以帮助我
答案 0 :(得分:3)
SELECT A.NAME FROM
(SELECT distinct RANK() OVER(ORDER BY NAME) RNK,NAME FROM USERS) A
WHERE A.RNK>4 AND A.RNK<16
使用LIMIT
并不能保证您将获得具有正确顺序的顶行。
如果您使用ANALYTIC
函数,它将为您提供正确的结果。
答案 1 :(得分:2)
这是一种方法。我喜欢将Common Table Expressions用于这样的事情,因为它使查询易于理解,尽管这并不是特别复杂。
WITH CTE AS
(
Select Distinct Email From User
)
,
CTE1 AS
(
Select Email, ROW_NUMBER() over (ORDER BY Email) AS RowNumber
From CTE
)
Select Top 10 * From CTE1 Where RowNumber > 5
答案 2 :(得分:1)
with t2 as
(
select t1.*,
row_number() over (order by id) rn
from
(select email, max(id) as id from [user] group by email) as t1
)
select * from t2 where rn between 5 and 10
答案 3 :(得分:1)
这个怎么样:
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY email) AS row
FROM user ) a
WHERE row > 5 and row <= 10
我认为你正在使用SKIP错误,它应该是ORDER BY子句的一部分。
答案 4 :(得分:1)
SELECT DISTINCT TOP(10) Email FROM TableName WHERE Email not in (SELECT TOP(5) Email From TableName)
您可以尝试使用此代码,在此查询中,获取10个不同的电子邮件ID会跳过您在此问题中所说的5条记录。