【发布时间】:2013-10-10 01:26:38
【问题描述】:
我刚开始学习 MySQL,我遇到了这个问题,我非常需要解决方案或只是逻辑。
例如我有这张桌子:
id a
-- --
1 1
2 2
3 3
4 5
5 6
6 7
7 9
8 10
9 11
10 12
现在,我想要显示列a 中的所有数据,这些数据应按系列分组。在这种情况下,结果应该是:
series_start|series_end|count
------------+----------+-----
1 3 3
5 7 3
9 12 4
这需要很多子查询和连接。我现在想不通。
【问题讨论】:
-
要求代码的问题必须表明对所解决问题的最低理解。包括尝试过的解决方案、它们为什么不起作用以及预期的结果。
-
它需要几个 JOIN,但没有子查询 ;-)
-
SELECT a.a start , MIN(c.a) end , MIN(c.a) - a.a + 1 diff FROM my_table a LEFT JOIN my_table b ON a.a = b.a + 1 LEFT JOIN my_table c ON c.a >= a.a LEFT JOIN my_table d ON d.a = c.a+1 WHERE b.a IS NULL AND c.a IS NOT NULL AND d.a IS NULL GROUP BY a.a;
-
@Strawberry :这就是我要找的。span>