我一直試圖寫一個(gè)邏輯來打印所有素?cái)?shù)。
并且在1
到100
的范圍內(nèi)如預(yù)期工作。
但是,當(dāng)我將范圍從1
增加到500
時(shí),它不起作用
能否詳細(xì)解釋一下我下面代碼中的錯(cuò)誤以及如何改進(jìn)。
任何簡(jiǎn)單或不同的打印素?cái)?shù)的方法都會(huì)受到歡迎
Code :
SELECT
result
FROM
(
SELECT
CASE
WHEN ROWNUM = 2 THEN
ROWNUM
WHEN ROWNUM = 3 THEN
ROWNUM
WHEN ROWNUM = 5 THEN
ROWNUM
END AS result
FROM
dual
CONNECT BY
ROWNUM <= 5
)
WHERE
result IS NOT NULL
UNION ALL
SELECT
result
FROM
(
SELECT
decr1 AS result
FROM
(
SELECT
rn AS decr1
FROM
(
SELECT
ROWNUM AS rn
FROM
dual
CONNECT BY
ROWNUM < 1000
)
)
WHERE
decr1 > 5
MINUS
SELECT
decr AS result
FROM
(
SELECT
t.rn AS decr
FROM
(
SELECT
ROWNUM AS rn
FROM
dual
CONNECT BY
ROWNUM < 1000
) t
WHERE
rn >= 6
)
WHERE
mod(decr, 2) = 0
OR mod(decr, 3) = 0
OR mod(decr, 4) = 0
OR mod(decr, 5) = 0
OR mod(decr, 6) = 0
OR mod(decr, 7) = 0
OR mod(decr, 8) = 0
OR mod(decr, 9) = 0
OR mod(decr, 10) = 0
);
我的輸出范圍為1
到100
當(dāng)您決定在SQL中執(zhí)行此操作時(shí),您已經(jīng)放棄了處理效率,因此您最好選擇一些明確的方法。這是一個(gè)SQL,它幾乎是沿著質(zhì)數(shù)定義的直線: