1
我想從一個簡單的表像這樣得到的所有序列(大於1號)的開頭和結尾的結尾:開始,並將所有序列
CREATE TABLE `sequence` (
`id` int(11) NOT NULL
);
INSERT INTO `sequence` (`id`) VALUES (1), (3), (4), (6), (7), (8), (10), (11), (12), (13), (15), (16), (17), (18), (19), (21), (22), (23), (24), (25), (26);
參考this website,在尋找代替差距,我想獲得所有序列的'開始'和'停止'。所以,我希望這樣的結果:
+-----+----+
|start|stop|
+-----+----+
| 3| 4|
| 6| 8|
| 10| 13|
| 15| 19|
| 21| 26|
+-----+----+
我想出了以下查詢這使我開始位置的權利,而不是結束位置。
SELECT
start, stop
FROM (
SELECT
t1.id AS start, MIN(t3.id) AS stop
FROM
sequence t1
INNER JOIN sequence t2 ON t1.id + 1 = t2.id
LEFT OUTER JOIN sequence t3 ON t1.id < t3.id
GROUP BY
t1.id
ORDER BY 1
) x
WHERE
x.start NOT IN (
SELECT
MIN(t3.id) AS stop
FROM
sequence t1
INNER JOIN sequence t2 ON t1.id + 1 = t2.id
LEFT OUTER JOIN sequence t3 ON t1.id < t3.id
GROUP BY
t1.id
ORDER BY 1
)
GROUP BY
start;
任何人都可以指向正確的方向嗎?