sql数据库的操作,查找被删除数据和指定数据集

快乐起航2020 2015-12-31 02:43:30
在"评论表Reply(reID,reContent)"中,reID是自增列,但Reply表中的数据被删除过,即reID不是连续的。

1):请用一条SQL语句找出排在倒数100~120位置的那20条数据,按reID降序排列


2):假设Reply中只被删除过1条记录,请找出被删除的记录的reID
...全文
321 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐起航2020 2016-01-15
  • 打赏
  • 举报
回复
太高深了,O(∩_∩)O谢谢大家,散分
zhll2046 2015-12-31
  • 打赏
  • 举报
回复
DECLARE @T TABLE(reID INT,COL1 VARCHAR(10));

INSERT INTO @T 
VALUES
(1,'something'),
(2,'something'), --倒数第二
(4,'something'), --倒数第三
(5,'something'),
(6,'something');

SELECT * FROM @T

--请用一条SQL语句找出排在倒数2-3位置的那2条数据,按reID降序排列

SELECT * FROM @T ORDER BY reID DESC
OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY

--假设Reply中只被删除过1条记录,请找出被删除的记录的reID
SELECT reID+1 missingReID FROM @T T WHERE NOT EXISTS(SELECT 1 FROM @T WHERE reID=t.reID+1) 
						AND reID<>(SELECT MAX(reID) FROM @T)
中国风 2015-12-31
  • 打赏
  • 举报
回复
这样结果?
DECLARE @StartID INT=100,@End INT=120,@MaxID INT

SELECT TOP 1 @MaxID=reID FROM Reply ORDER BY reID DESC

;WITH T1
AS
(
SELECT TOP (@End-@StartID) @MaxID-ROW_NUMBER()OVER(ORDER BY @StartID)+1 AS ID,ROW_NUMBER()OVER(ORDER BY @StartID) AS Ord FROM sys.columns AS a ,sys.columns AS b
)
SELECT  a.ID
		,CASE WHEN b.reID  IS NULL THEN 1 ELSE 0 END AS IsDel--是否删除
FROM    T1 AS a
        LEFT JOIN Reply AS b ON a.ID = b.reID
WHERE   a.ID > 0
        AND a.Ord BETWEEN @StartID AND @End
中国风 2015-12-31
  • 打赏
  • 举报
回复
既然删除的记录又需要找出来就别删除,用一个栏位标识为删除就行了
Tiger_Zhao 2015-12-31
  • 打赏
  • 举报
回复
;WITH a AS (
SELECT TOP 120 *,
ROW_NUMBER() OVER(ORDER BY reID DESC) rn
FROM Reply
ORDER BY reID DESC
)
SELECT reID,
reContent
FROM a
WHERE rn BETWEEN 101 AND 120
ORDER BY rn

;WITH a AS (
SELECT TOP 121 *, -- 多取一条,用来判定倒数120条之前缺号
ROW_NUMBER() OVER(ORDER BY reID)-1 rn
FROM Reply
ORDER BY reID DESC
)
SELECT a1.reID - 1 missing_reID
a0.reID, a1.reID -- 用来确认是否只缺一个号
FROM a a0
JOIN a a1
ON a0.rn + 1 = a1.rn
WHERE a1.rn BETWEEN 1 AND 20
AND a0.reID + 1 <> a1.reID

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧