2017-02-14 764 views
2

我想用jOOQ構建和執行這樣的查詢。如何使用jOOQ創建SELECT EXISTS(子查詢)?

SELECT EXISTS(subquery) 

對於爲例:

SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS') 

我該怎麼辦呢?可以做到嗎?

+0

用戶知道如何編寫SQL的另一種情況,但是第三方軟件阻礙了它? –

回答

1

找到它。我正在尋找一個selectExists方法,並被謂詞構造函數弄糊塗了。

有一個更方便fetchExists(subquery)

我的具體實例解決這樣的:

create.fetchExists(
     create.selectOne() 
       .from(ICONA_ETIQUETA) 
       .where(ICONA_ETIQUETA.PVP.isNull(), 
        ICONA_ETIQUETA.UNITAT_VENDA.eq('GRAMS')) 
    ); 

直接返回一個布爾值。

3

Your own solution是您想要做的最方便的方法。一個更普遍的方法是使用:

create.select(field(exists(...))) 

如果你換一個Condition(創建由DSL.exists(Select))在Field使用DSL.field(Condition)

從第3.9節開始,Field<Boolean>Condition不是相同的類型。這可能會在未來改變#3867