【发布时间】:2016-04-30 14:35:54
【问题描述】:
我想在下表中找出差距:
create table sequence
(
`Id` int,
`Value` int not null,
PRIMARY KEY (`Id`,`Value`)
);
insert into sequence
( `Id`, `Value` )
values
(10, 0 ),
(10, 1 ),
(10, 4 ),
(10, 5 ),
(10, 6 ),
(10, 7 ),
(11, 0 ),
(11, 1 ),
(11, 2 ),
(11, 5 ),
(11, 7 );
预期的结果是这样的:
10 | 2-3
11 | 3-4
11 | 6
或
10 | 2
10 | 3
11 | 3
11 | 4
11 | 6
我知道,'Value' 列的值在 0 到 7 之间。
是否可以使用 MySQL 来做到这一点?
编辑 1
根据我得出的答案:
SELECT Tbl1.Id,
startseqno,
Min(B.Value) - 1 AS END
FROM (SELECT Id,
Value + 1 AS StartSeqNo
FROM SEQUENCE AS A
WHERE NOT EXISTS (SELECT *
FROM SEQUENCE AS B
WHERE B.Id = A.id
AND B.Value = A.Value + 1)
AND Value < (SELECT Max(Value)
FROM SEQUENCE B
WHERE B.Id = A.Id)) AS Tbl1,
SEQUENCE AS B
WHERE B.Id = Tbl1.Id
AND B.Value > Tbl1.startseqno
但现在我得到的只是
10 | 2 | 3
请问有人知道如何解决吗?
【问题讨论】:
-
是的,这是可能的。在此处阅读:stackoverflow.com/questions/9787038/…
-
@kali 谢谢,我已经阅读并附带了一些代码,但这仍然不是我需要的
-
@AfshanShujat 谢谢,我已经阅读并附带了一些代码,但仍然不是我需要的
标签: mysql sql database gaps-in-data