可以使用单个SQL查询来完成此操作

时间:2010-05-27 23:41:13

标签: sql mysql

我正在使用MySQL。我有一张桌子

Type SubType
1 1
1 5
1 6
1 8
2 2
2 3
3 1
3 2
3 3

对于每种类型,都有一些子类型。对于类型中的每个子类型,在下一个类型中都有相应的子类型:

(1,1) => (2,2)
(1,5) => (2,3)
(1,6) => (2,2)
(1,8) => (2,3)
(2,2) => (3,1)
(2,3) => (3,2)

如果您还没有看到模式,那么它是:您按子类型对当前和下一个类型进行排序,然后在下一个类型中,您获得与当前类型中当前子类型相同位置的子类型。如果当前类型中有更多的子类型,则在下一个类型中,您将绕过并从下一个类型中的第一个子类型开始。

是否可以构造一个采用当前类型和子类型并在下一个类型中返回相应子类型的查询?

2 个答案:

答案 0 :(得分:0)

不确定mysql ...在oracle中有LEAD和LAG函数,以及CONNECT BY。

我对你的描述感到有些困惑,我必须说:)

答案 1 :(得分:0)

使用查询可能有一些方法可以做到这一点,但我认为从表中构建数据结构然后在那里进行查找会更好。我正在考虑的MySQL查询将涉及从子查询,模运算等获取计数。最终结果将是一个混乱的查询!如果你有这样的事情:

在基本的Python中:

>>> x = [None, [1, 5, 6, 8], [2, 3], [1, 2, 3]]
>>> for i in range(1,3):
...   for j in range(len(x[i])):
...     k = j % len(x[i+1])
...     print(i,x[i][j],i+1,x[i+1][k])
... 
1 1 2 2
1 5 2 3
1 6 2 2
1 8 2 3
2 2 3 1
2 3 3 2