以sql查询

时间:2016-01-29 08:39:50

标签: mysql loops

我不知道从哪里开始,所以我只想发布一个我需要的例子:

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来进行这种操作应该更快。是否可以进行此类数据库查询?

1 个答案:

答案 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