我不知道从哪里开始,所以我只想发布一个我需要的例子:
A B
5 0
10 0
15 0
20 0
25* 1*
30 0
35 1
40 1
45* 0
50 0
55 0
60 0
65 0
70 1
75 1
80 0
85 0
我需要一个查询,在B列中寻找1(第一行在25 1中找到),"入口点"从这一点开始,往下看并找到第一列A,即在起点上比A多20个 - "退出点" (找到第45行0),返回行索引"入口点"和"退出点" ,在这种情况下,25 1和45 0行。
另外,棘手的部分可能是,我不想要第35行或第1行,它还包含B列中的1,但我不想在入口和出口点之间插入行,所以下一个适用的行将是第70行作为入口点(75 1也是)
这是我在java循环中可以做到的没有问题,但我的性能比我想要的要低,所以建议使用db来进行这种操作应该更快。是否可以进行此类数据库查询?
答案 0 :(得分:0)
如果我完全理解您需要第一个有效入口点及其第一个有效出口点,那么这样的事情应该可以完成这项工作
SELECT
(
SELECT
MIN(A)
FROM
table
WHERE
B = 1
) entry,
A exit,
FROM
table
WHERE
A + 20 >= (SELECT
MIN(A)
FROM
table
WHERE
B = 1)
AND
B = 0
LIMIT 1