- All Superinterfaces:
Attachable,AttachableQueryPart,AutoCloseable,FieldLike,Fields,Flow.Publisher<R>,Iterable<R>,Publisher<R>,org.reactivestreams.Publisher<R>,Query,QueryPart,ResultQuery<R>,Select<R>,SelectCorrelatedSubqueryStep<R>,SelectFinalStep<R>,SelectForStep<R>,SelectForUpdateStep<R>,SelectLimitStep<R>,SelectOptionStep<R>,SelectUnionStep<R>,Serializable,Statement,TableLike<R>
Select's DSL API when selecting generic
Record types.
Example: Its equivalent in jOOQ
-- get all authors' first and last names, and the number
-- of books they've written in German, if they have written
-- more than five books in German in the last three years
-- (from 2011), and sort those authors by last names
-- limiting results to the second and third row
SELECT T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, COUNT(*)
FROM T_AUTHOR
JOIN T_BOOK ON T_AUTHOR.ID = T_BOOK.AUTHOR_ID
WHERE T_BOOK.LANGUAGE = 'DE'
AND T_BOOK.PUBLISHED > '2008-01-01'
GROUP BY T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME
HAVING COUNT(*) > 5
ORDER BY T_AUTHOR.LAST_NAME ASC NULLS FIRST
LIMIT 2
OFFSET 1
FOR UPDATE
OF FIRST_NAME, LAST_NAME
NO WAIT
Refer to the manual for more details
create.select(TAuthor.FIRST_NAME, TAuthor.LAST_NAME, create.count())
.from(T_AUTHOR)
.join(T_BOOK).on(TBook.AUTHOR_ID.equal(TAuthor.ID))
.where(TBook.LANGUAGE.equal("DE"))
.and(TBook.PUBLISHED.greaterThan(parseDate('2008-01-01')))
.groupBy(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
.having(create.count().greaterThan(5))
.orderBy(TAuthor.LAST_NAME.asc().nullsFirst())
.limit(2)
.offset(1)
.forUpdate()
.of(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
.noWait();
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescription@NotNull SelectSeekLimitStep<R>Add a syntheticSEEK AFTERclause to the query.@NotNull SelectSeekLimitStep<R>Add a syntheticSEEK AFTERclause to the query.@NotNull SelectSeekLimitStep<R>Add a syntheticSEEK AFTERclause to the query.@NotNull SelectSeekLimitStep<R>Add a syntheticSEEK AFTERclause to the query.@NotNull SelectSeekLimitStep<R>seekBefore(Object... values)Deprecated.- [#7461] - SEEK BEFORE is not implemented correctly@NotNull SelectSeekLimitStep<R>seekBefore(Field<?>... fields)Deprecated.- [#7461] - SEEK BEFORE is not implemented correctlyMethods inherited from interface org.jooq.Attachable
attach, configuration, detachMethods inherited from interface org.jooq.AttachableQueryPart
getBindValues, getParam, getParams, getSQL, getSQLMethods inherited from interface org.jooq.Fields
dataType, dataType, dataType, dataTypes, field, field, field, field, field, field, field, field, field, field, fields, fields, fields, fields, fields, fieldsRow, fieldStream, indexOf, indexOf, indexOf, type, type, type, typesMethods inherited from interface org.reactivestreams.Publisher
subscribeMethods inherited from interface org.jooq.Query
cancel, close, execute, executeAsync, executeAsync, isExecutableMethods inherited from interface org.jooq.ResultQuery
bind, bind, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, coerce, collect, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetch, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAny, fetchAnyArray, fetchAnyInto, fetchAnyInto, fetchAnyMap, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArray, fetchArrays, fetchAsync, fetchAsync, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchGroups, fetchInto, fetchInto, fetchInto, fetchLazy, fetchMany, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMap, fetchMaps, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOne, fetchOneArray, fetchOneInto, fetchOneInto, fetchOneMap, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptional, fetchOptionalArray, fetchOptionalInto, fetchOptionalInto, fetchOptionalMap, fetchResultSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSet, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingle, fetchSingleArray, fetchSingleInto, fetchSingleInto, fetchSingleMap, fetchSize, fetchStream, fetchStreamInto, fetchStreamInto, getRecordType, getResult, intern, intern, intern, intern, iterator, keepStatement, maxRows, poolable, queryTimeout, resultSetConcurrency, resultSetHoldability, resultSetType, spliterator, streamMethods inherited from interface org.jooq.SelectCorrelatedSubqueryStep
between, between, between, between, betweenSymmetric, betweenSymmetric, betweenSymmetric, betweenSymmetric, compare, compare, compare, eq, eq, eq, equal, equal, equal, ge, ge, ge, greaterOrEqual, greaterOrEqual, greaterOrEqual, greaterThan, greaterThan, greaterThan, gt, gt, gt, in, in, isDistinctFrom, isDistinctFrom, isDistinctFrom, isNotDistinctFrom, isNotDistinctFrom, isNotDistinctFrom, isNotNull, isNull, le, le, le, lessOrEqual, lessOrEqual, lessOrEqual, lessThan, lessThan, lessThan, lt, lt, lt, ne, ne, ne, notBetween, notBetween, notBetween, notBetween, notBetweenSymmetric, notBetweenSymmetric, notBetweenSymmetric, notBetweenSymmetric, notEqual, notEqual, notEqual, notIn, notInMethods inherited from interface org.jooq.SelectFinalStep
getQueryMethods inherited from interface org.jooq.SelectForStep
forJSON, forJSONB, forXMLMethods inherited from interface org.jooq.SelectForUpdateStep
forKeyShare, forNoKeyUpdate, forShare, forUpdate, withCheckOption, withReadOnlyMethods inherited from interface org.jooq.SelectLimitStep
limit, limit, limit, limit, limit, limit, limit, limit, limit, limit, offset, offset, offsetMethods inherited from interface org.jooq.SelectOptionStep
optionMethods inherited from interface org.jooq.SelectUnionStep
except, exceptAll, intersect, intersectAll, union, unionAll
-
Method Details
-
seek
Add a syntheticSEEK AFTERclause to the query.The synthetic
SEEK AFTERclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK AFTERclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK AFTERclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seek(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) > (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')
The
SEEK AFTERmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-
seek
Add a syntheticSEEK AFTERclause to the query.The synthetic
SEEK AFTERclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK AFTERclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK AFTERclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seek(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) > (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')
The
SEEK AFTERmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-
seekAfter
Add a syntheticSEEK AFTERclause to the query.The synthetic
SEEK AFTERclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK AFTERclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK AFTERclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seekAfter(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) > (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')
The
SEEK AFTERmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-
seekAfter
Add a syntheticSEEK AFTERclause to the query.The synthetic
SEEK AFTERclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK AFTERclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK AFTERclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seekAfter(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) > (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')
The
SEEK AFTERmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-
seekBefore
@NotNull @CheckReturnValue @Support @Deprecated @NotNull SelectSeekLimitStep<R> seekBefore(Object... values)Deprecated.- [#7461] - SEEK BEFORE is not implemented correctlyAdd a syntheticSEEK BEFOREclause to the query.The synthetic
SEEK BEFOREclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK BEFOREclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK BEFOREclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seekBefore(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) < (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id < 3) OR (id = 3 AND code < 'abc')
The
SEEK BEFOREmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-
seekBefore
@NotNull @CheckReturnValue @Support @Deprecated @NotNull SelectSeekLimitStep<R> seekBefore(Field<?>... fields)Deprecated.- [#7461] - SEEK BEFORE is not implemented correctlyAdd a syntheticSEEK BEFOREclause to the query.The synthetic
SEEK BEFOREclause is an alternative way to specify anOFFSET, and thus to perform paging in a SQL query. This can be advantageous for two reasons:- The SQL generated from the
SEEK BEFOREclause is a regular predicate, which can be used by query plan optimisers to choose an appropriate index. The SQL standardOFFSETclause will need to skipNrows in memory. - The
SEEK BEFOREclause is stable with respect to new data being inserted or data being deleted while paging through pages.
Example:
DSL.using(configuration) .selectFrom(TABLE) .orderBy(ID, CODE) .seekBefore(3, "abc") .fetch();The above query will render the following SQL statement:
SELECT table.col1, table.col2, ... FROM table WHERE (id, code) < (3, 'abc') ORDER BY id ASC, code ASC
The actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id < 3) OR (id = 3 AND code < 'abc')
The
SEEK BEFOREmethod currently does not support seekingNULLvalues, or operating withNULLS FIRST,NULLS LASTclauses in theORDER BYclause. - The SQL generated from the
-