簡體   English   中英

以SQL查詢形式循環

[英]Loop in a form of sql query

我不知道從哪里開始,所以我只舉一個我需要的例子:

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或40 1,它也包含B列中的1,但是我不希望入口點和出口點之間的行,所以下一個適用的行是第70 1行作為入口點(也應為75 1)

這是我可以在java循環中完成的事情,但是我得到的性能比我想要的要低,因此建議使用db進行這種操作應該更快。 可以執行這樣的數據庫查詢嗎?

如果我完全理解您需要第一個有效的入口點及其第一個有效的出口點,則應該執行以下操作

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM