好吧,假设我的桌子有3列(card_no
,email
,trans_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
我希望有人可以帮助我,提前谢谢
答案 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