SQL Server分页查询,其中包含插入每个页面的随机结果

时间:2017-07-11 04:35:14

标签: sql sql-server sql-server-2008-r2

好吧,假设我的桌子有3列(card_noemailtrans_date

我想编写一个查询来获取每页随机电子邮件域的分页,有人可以帮助我吗?我使用的是SQL Server 2008 R2,暂时使用此查询

WITH CTEResults AS 
(
    SELECT 
        card_no,
        Row_number()OVER (ORDER BY trans_date DESC) AS RowNum,
        email,
        Substring(email, Charindex('@', email), Len(email)) AS Domain
    FROM   
        kartu
)
SELECT *
FROM CTEResults
WHERE RowNum BETWEEN 0 AND 200 

我希望有人可以帮助我,提前谢谢

1 个答案:

答案 0 :(得分:0)

由于您需要随机订单,因此需要将分页结果存储在某处以确保不会再次返回相同的结果

If object_id('tempdb.dbo.#kartu') is null
select * into #kartu from kartu where 1 = 0

;WITH CTEResults
     AS (SELECT card_no,
                Row_number()OVER (ORDER BY new_id()) AS RowNum,
                email,
                Substring(email, Charindex('@', email), Len(email)) AS Domain
         FROM   kartu a
         Where not exists (select 1 from #kartu b where a.card_no = b.card_no and a.email = b.email))
Insert into #kartu output inserted.*
SELECT *
FROM   CTEResults
WHERE  RowNum BETWEEN 0 AND 200