Interface SelectSeekStepN<R extends Record>
- All Superinterfaces:
Attachable, AttachableQueryPart, FieldLike, FieldOrRowOrSelect, 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:
-- 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
Its equivalent in jOOQ 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();
Refer to the manual for more details- 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 Attachable
attach, configuration, detachMethods inherited from interface AttachableQueryPart
getBindValues, getParam, getParams, getSQL, getSQLMethods inherited from interface Fields
dataType, dataType, dataType, dataTypes, field, field, field, field, field, field, field, field, field, field, fields, fields, fields, fields, fields, fieldsIncludingHidden, fieldsRow, fieldStream, indexOf, indexOf, indexOf, type, type, type, typesMethods inherited from interface org.reactivestreams.Publisher
subscribeMethods inherited from interface Query
cancel, execute, executeAsync, executeAsync, executeLarge, executeLargeAsync, executeLargeAsync, isExecutableMethods inherited from interface QueryPart
$replace, $replace, $traverse, $traverse, equals, hashCode, toStringMethods inherited from interface 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, forEach, getRecordType, getResult, iterator, keepStatement, largeMaxRows, maxRows, poolable, queryTimeout, resultSetConcurrency, resultSetHoldability, resultSetType, spliterator, streamMethods inherited from interface Select
$connectBy, $connectBy, $connectByNoCycle, $connectByNoCycle, $connectByStartWith, $connectByStartWith, $distinct, $distinct, $distinctOn, $distinctOn, $from, $from, $groupBy, $groupBy, $groupByDistinct, $groupByDistinct, $having, $having, $intoTable, $intoTable, $intoVariables, $intoVariables, $limit, $limit, $limitPercent, $limitPercent, $limitWithTies, $limitWithTies, $offset, $offset, $orderBy, $orderBy, $qualify, $qualify, $select, $select, $where, $where, $window, $window, $with, $with, getSelect, isNotNull, isNullMethods inherited from interface 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, 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 SelectFinalStep
getQueryMethods inherited from interface SelectForStep
forJSON, forJSONB, forXMLMethods inherited from interface SelectForUpdateStep
forKeyShare, forNoKeyUpdate, forShare, forUpdate, withCheckOption, withReadOnlyMethods inherited from interface SelectLimitStep
limit, limit, limit, limit, limit, limit, offset, offsetMethods inherited from interface SelectOptionStep
optionMethods inherited from interface SelectUnionStep
except, exceptAll, exceptDistinct, intersect, intersectAll, intersectDistinct, union, unionAll, unionDistinctMethods inherited from interface TableLike
asMultiset, asMultiset, asMultiset, asMultiset, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable
-
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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- 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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- 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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- 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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id > 3) OR (id = 3 AND code > 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- 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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id < 3) OR (id = 3 AND code < 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- 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 ASCThe actual row value expression predicate may be expanded into this equivalent predicate:
WHERE (id < 3) OR (id = 3 AND code < 'abc')The seek column list length must match the
ORDER BYexpression list length.NULLhandlingNULLhandling in theSEEKclause is enabled only forORDER BYexpressions when providing explicitSortField.nullsFirst()orSortField.nullsLast()clauses, in case of which theSEEKpredicate is always composed of multiple predicates containingField.isNull()orField.isNotNull(), respectively, never ofROWpredicates.- See Also:
- The SQL generated from the
-