我正在使用JPA和JPQL查詢來從MySQL數據庫檢索數據。但我的問題是不是特定語言(我認爲),而邏輯...如何選擇行BETWEEN範圍列表
我想SELECT
表WHERE
一列是BETWEEN
範圍的列表的所有條目。
例如:
SELECT x FROM myTable
WHERE x BETWEEN 2 AND 5
OR x BETWEEN 7 AND 9
雖然範圍(2-5,7-9)來自另一張表:
RANGES ex: id | from | to
–––––––––– –––––––––––––––
id: INT 1| 2| 5
from: INT 2| 7| 9
to: INT 3| 9| 15
4| 17| null
我的問題)
是, Ranges
列表是動態的,可能只有一個範圍,如
x BETWEEN 2 AND 5
個或多個範圍類似
x BETWEEN 2 AND 5 OR x BETWEEN 7 AND 9 OR x BETWEEN ....
我的問題B)
是,該Ranges
也可以是開放的像
x >= 17
我的問題C)
是,有其他WHERE
條件,限制結果。其中一些WHERE
條件比BETWEEN
條件更「限制」。所以他們首先要讓整個查詢更快。比方說,例如
... WHERE x%2=0 AND x BETWEEN 2 AND 5
對於C)我想到了子查詢,例如:
SELECT x FROM myTable
WHERE x IN (
SELECT x FROM myTable
WHERE x BETWEEN 2 AND 5
OR x BETWEEN 7 AND 9
)
AND y .. something something
「好」的事情是,我使用Java和JPA創建我的查詢,所以我可以動態創建查詢。但在濫用String concatenation動態創建SQL查詢之前,我希望能找到一個純SQL解決方案(或者JPQL更好)
x如何在兩者之間(2和5)和(7和9)?嘗試與OR –
對不起。當然,我的意思是或:) – GameDroids