22,209
社区成员
发帖
与我相关
我的任务
分享
DECLARE @TB TABLE([COL] VARCHAR(4))
INSERT @TB
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc'
SELECT *,ID=IDENTITY(INT,1,1) INTO # FROM @TB
SELECT COL
FROM (SELECT *, ID-(SELECT COUNT(*) FROM # WHERE COL=T.COL AND ID<=T.ID) AS DIF FROM # AS T) AS T2
GROUP BY COL
HAVING COUNT(DISTINCT DIF)>1
DROP TABLE #
/*
COL
----
aa
bb
*/
在SQL中
select col from tb group by col having count(1)=1
--如果 是連續的ID,那麼減去連續的編號SEQ,那麼每一行的差應該相同.
--例如對於aa, 最後一條ID不連續,所以減去連續的SEQ後所得的差跟前面的紀錄不同了
DECLARE @TB TABLE([COL] VARCHAR(4))
INSERT @TB
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'cc' UNION ALL
SELECT 'aa' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'bb' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'ccc'
SELECT *,ID=IDENTITY(INT,1,1) INTO # FROM @TB
SELECT *,ID-SEQ AS DIF
FROM (
SELECT *, (SELECT COUNT(*) FROM # WHERE COL=T.COL AND ID<=T.ID) AS SEQ FROM # AS T
WHERE COL='aa'
) AS T2
DROP TABLE #
/*
COL ID SEQ DIF
---- ----------- ----------- -----------
aa 1 1 0
aa 2 2 0
aa 3 3 0
aa 4 4 0
aa 17 5 12
*/