- Type Parameters:
R
- The record type associated with this table
- All Superinterfaces:
Fields
,GroupField
,Named
,Qualified
,QueryPart
,RecordQualifier<R>
,SelectField<R>
,SelectFieldOrAsterisk
,Serializable
,TableLike<R>
,Typed<R>
- All Known Subinterfaces:
CommonTableExpression<R>
,JSONTableColumnPathStep
,JSONTableColumnsStep
,QOM.DataChangeDeltaTable<R>
,QOM.DerivedTable<R>
,QOM.Dual
,QOM.GenerateSeries<T>
,QOM.Lateral<R>
,QOM.LinkedTable<R>
,QOM.RowsFrom
,QOM.TableAlias<R>
,QOM.Values<R>
,TableOnConditionStep<R>
,TableOptionalOnStep<R>
,XMLTableColumnPathStep
,XMLTableColumnsStep
- All Known Implementing Classes:
CustomTable
,TableImpl
Like Field
, a Table
is a basic building block of any
Query
, as they all operate on at least one table. There are many
different types of tables, including:
- Generated table or view references
- Plain SQL tables created with
DSL.table(String)
- Table references created with
DSL.table(Name)
- Derived tables created with
DSL.table(Select)
- Join expressions created e.g. with
join(TableLike)
- Common table expressions (
CommonTableExpression
) - Unnested arrays referenced through
DSL.unnest(Field)
and overloads - Table valued functions as provided by the code generator
- Etc.
Example:
// Assuming import static org.jooq.impl.DSL.*;
using(configuration)
.select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME)
.from(ACTOR) // Table reference
.fetch();
Instances can be created using DSL.table(Name)
and overloads.
Using table references as field expressions
Table references can be used like Field
in queries. This includes:
- A
GroupField
is an expression that is used in aSelect
query'sGROUP BY
clause. - A
SelectField
is an expression that is used in aSelect
query'sSELECT
clause, or in a DML query'sRETURNING
clause, such asINSERT … RETURNING
.
Other types of Table
cannot be used this way, even if the type system
cannot prevent this.
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescriptionCreate an alias for this table.Create an alias for this table and its fields.as
(String alias, Collection<? extends String> fieldAliases) Create an alias for this table and its fields.Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Create an alias for this table.as
(Name alias, Collection<? extends Name> fieldAliases) Create an alias for this table and its fields.Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Create an alias for this table and its fields.Create an alias for this table based on another table's name.as
(Table<?> otherTable, Collection<? extends Field<?>> otherFields) Create an alias for this table based on another table's name.as
(Table<?> otherTable, BiFunction<? super Field<?>, ? super Integer, ? extends Field<?>> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ.Create an alias for this table based on another table's name.Create anSQLDialect.ORACLE
flashback query clause from this table.Create anSQLDialect.ORACLE
flashback query clause from this table.asOfTimestamp
(Timestamp timestamp) Create anSQLDialect.ORACLE
flashback query clause from this table.asOfTimestamp
(Field<Timestamp> timestamp) Create anSQLDialect.ORACLE
flashback query clause from this table.@NotNull QualifiedAsterisk
asterisk()
Create a qualified asterisk expression from this table (table.*
) for use withSELECT
.A table reference of this table at a givenLink
.A table reference of this table at a givenLink
.A table reference of this table at a givenLink
.crossApply
(String sql) CROSS APPLY
a table to this table.crossApply
(String sql, Object... bindings) CROSS APPLY
a table to this table.crossApply
(String sql, QueryPart... parts) CROSS APPLY
a table to this table.crossApply
(Name name) CROSS APPLY
a table to this table.crossApply
(SQL sql) CROSS APPLY
a table to this table.crossApply
(TableLike<?> table) CROSS APPLY
a table to this table.CROSS JOIN
a table to this table.CROSS JOIN
a table to this table.CROSS JOIN
a table to this table.CROSS JOIN
a table to this table.CROSS JOIN
a table to this table.CROSS JOIN
a table to this table.@NotNull DivideByOnStep
Create a newTABLE
reference from this table, applying relational division.@NotNull Condition
TheEQ
operator.@NotNull Condition
TheEQUAL
operator, an alias for theEQ
operator.boolean
Check whether thisQueryPart
can be considered equal to anotherQueryPart
.for_
(PeriodSpecification periodSpecification) Create a reference to a temporal table with aPeriodSpecification
for usage inSelect
.forceIndex
(String... indexes) Specify a MySQL style table hint for query optimisation.forceIndexForGroupBy
(String... indexes) Specify a MySQL style table hint for query optimisation.forceIndexForJoin
(String... indexes) Specify a MySQL style table hint for query optimisation.forceIndexForOrderBy
(String... indexes) Specify a MySQL style table hint for query optimisation.forPortionOf
(PeriodSpecification periodSpecification) The inverse operation ofRecord.into(Table)
.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(String sql) FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(String sql, Object... bindings) FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(String sql, QueryPart... parts) FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(Name name) FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(SQL sql) FULL OUTER JOIN
a table to this table.@NotNull TableOnStep<Record>
fullOuterJoin
(TableLike<?> table) FULL OUTER JOIN
a table to this table.Get a list ofCHECK
constraints of this table.Retrieve the table'sIDENTITY
information, if available.Retrieve all of the table's indexes.getKeys()
Retrieve all of the table's primary and unique keys.@NotNull TableOptions
Get the table options.Retrieve the table's primary key@Nullable TableField<R,
?> A "timestamp" field holding record timestamp information used for optimistic locking@Nullable TableField<R,
?> A "version" field holding record version information used for optimistic locking@NotNull List<ForeignKey<R,
?>> Get the list ofFOREIGN KEY
's of this table<O extends Record>
@NotNull List<ForeignKey<O,R>> getReferencesFrom
(Table<O> other) Get a list ofFOREIGN KEY
's of a specific table, referencing a this table.<O extends Record>
@NotNull List<ForeignKey<R,O>> getReferencesTo
(Table<O> other) Get a list ofFOREIGN KEY
's of this table, referencing a specific table.@NotNull TableOptions.TableType
Get the table type.Retrieve all of the table's unique keys.ignoreIndex
(String... indexes) Specify a MySQL style table hint for query optimisation.ignoreIndexForGroupBy
(String... indexes) Specify a MySQL style table hint for query optimisation.ignoreIndexForJoin
(String... indexes) Specify a MySQL style table hint for query optimisation.ignoreIndexForOrderBy
(String... indexes) Specify a MySQL style table hint for query optimisation.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOnStep<Record>
INNER JOIN
a table to this table.@NotNull TableOptionalOnStep<Record>
Join a table to this table using aJoinType
@NotNull TableOnStep<R>
leftAntiJoin
(TableLike<?> table) A syntheticLEFT ANTI JOIN
clause that translates to an equivalentNOT EXISTS
predicate.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(String sql) LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(String sql, Object... bindings) LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(String sql, QueryPart... parts) LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(Name name) LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(SQL sql) LEFT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
leftOuterJoin
(TableLike<?> table) LEFT OUTER JOIN
a table to this table.@NotNull TableOnStep<R>
leftSemiJoin
(TableLike<?> table) A syntheticLEFT SEMI JOIN
clause that translates to an equivalentEXISTS
predicate.NATURAL FULL OUTER JOIN
a table to this table.naturalFullOuterJoin
(String sql, Object... bindings) NATURAL FULL OUTER JOIN
a table to this table.naturalFullOuterJoin
(String sql, QueryPart... parts) NATURAL FULL OUTER JOIN
a table to this table.naturalFullOuterJoin
(Name name) NATURAL FULL OUTER JOIN
a table to this table.naturalFullOuterJoin
(SQL sql) NATURAL FULL OUTER JOIN
a table to this table.naturalFullOuterJoin
(TableLike<?> table) NATURAL FULL OUTER JOIN
a table to this table.naturalJoin
(String sql) NATURAL JOIN
a table to this table.naturalJoin
(String sql, Object... bindings) NATURAL JOIN
a table to this table.naturalJoin
(String sql, QueryPart... parts) NATURAL JOIN
a table to this table.naturalJoin
(Name name) NATURAL JOIN
a table to this table.naturalJoin
(SQL sql) NATURAL JOIN
a table to this table.naturalJoin
(TableLike<?> table) NATURAL JOIN
a table to this table.NATURAL LEFT OUTER JOIN
a table to this table.naturalLeftOuterJoin
(String sql, Object... bindings) NATURAL LEFT OUTER JOIN
a table to this table.naturalLeftOuterJoin
(String sql, QueryPart... parts) NATURAL LEFT OUTER JOIN
a table to this table.naturalLeftOuterJoin
(Name name) NATURAL LEFT OUTER JOIN
a table to this table.naturalLeftOuterJoin
(SQL sql) NATURAL LEFT OUTER JOIN
a table to this table.naturalLeftOuterJoin
(TableLike<?> table) NATURAL LEFT OUTER JOIN
a table to this table.NATURAL RIGHT OUTER JOIN
a table to this table.naturalRightOuterJoin
(String sql, Object... bindings) NATURAL RIGHT OUTER JOIN
a table to this table.naturalRightOuterJoin
(String sql, QueryPart... parts) NATURAL RIGHT OUTER JOIN
a table to this table.naturalRightOuterJoin
(Name name) NATURAL RIGHT OUTER JOIN
a table to this table.naturalRightOuterJoin
(SQL sql) NATURAL RIGHT OUTER JOIN
a table to this table.naturalRightOuterJoin
(TableLike<?> table) NATURAL RIGHT OUTER JOIN
a table to this table.@NotNull Condition
TheNE
operator.@NotNull Condition
TheNOT_EQUAL
operator, an alias for theNE
operator.outerApply
(String sql) OUTER APPLY
a table to this table.outerApply
(String sql, Object... bindings) OUTER APPLY
a table to this table.outerApply
(String sql, QueryPart... parts) OUTER APPLY
a table to this table.outerApply
(Name name) OUTER APPLY
a table to this table.outerApply
(SQL sql) OUTER APPLY
a table to this table.outerApply
(TableLike<?> table) OUTER APPLY
a table to this table.@NotNull TableOuterJoinStep<Record>
partitionBy
(Collection<? extends Field<?>> fields) Add aPARTITION BY
clause to the left hand side of theOUTER JOIN
keywords@NotNull TableOuterJoinStep<Record>
partitionBy
(Field<?>... fields) Add aPARTITION BY
clause to the left hand side of theOUTER JOIN
keywords@NotNull PivotForStep
pivot
(Collection<? extends Field<?>> aggregateFunctions) Create a newTABLE
reference from this table, pivoting it into another form.@NotNull PivotForStep
Create a newTABLE
reference from this table, pivoting it into another form.@NotNull PivotForStep
Create a newTABLE
reference from this table, pivoting it into another form.@NotNull RecordType<R>
The record type produced by this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(String sql) RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(String sql, Object... bindings) RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(String sql, QueryPart... parts) RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(Name name) RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(SQL sql) RIGHT OUTER JOIN
a table to this table.@NotNull TablePartitionByStep<Record>
rightOuterJoin
(TableLike<?> table) RIGHT OUTER JOIN
a table to this table.rowid()
TheROWID
operator.@NotNull TableOnStep<Record>
straightJoin
(String sql) STRAIGHT_JOIN
a table to this table.@NotNull TableOnStep<Record>
straightJoin
(String sql, Object... bindings) STRAIGHT_JOIN
a table to this table.@NotNull TableOnStep<Record>
straightJoin
(String sql, QueryPart... parts) STRAIGHT_JOIN
a table to this table.@NotNull TableOnStep<Record>
straightJoin
(Name name) STRAIGHT_JOIN
a table to this table.@NotNull TableOnStep<Record>
straightJoin
(SQL sql) STRAIGHT_JOIN
a table to this table.@NotNull TableOnStep<Record>
straightJoin
(TableLike<?> table) STRAIGHT_JOIN
a table to this table.Specify a MySQL style table hint for query optimisation.useIndexForGroupBy
(String... indexes) Specify a MySQL style table hint for query optimisation.useIndexForJoin
(String... indexes) Specify a MySQL style table hint for query optimisation.useIndexForOrderBy
(String... indexes) Specify a MySQL style table hint for query optimisation.@NotNull VersionsBetweenAndStep<R,
Number> versionsBetweenScn
(Number scn) Create anSQLDialect.ORACLE
flashback versions query clause from this table.@NotNull VersionsBetweenAndStep<R,
Number> versionsBetweenScn
(Field<? extends Number> scn) Create anSQLDialect.ORACLE
flashback versions query clause from this table.@NotNull VersionsBetweenAndStep<R,
Number> Create anSQLDialect.ORACLE
flashback versions query clause from this table.@NotNull VersionsBetweenAndStep<R,
Timestamp> versionsBetweenTimestamp
(Timestamp timestamp) Create anSQLDialect.ORACLE
flashback versions query clause from this table.@NotNull VersionsBetweenAndStep<R,
Timestamp> versionsBetweenTimestamp
(Field<Timestamp> timestamp) Create anSQLDialect.ORACLE
flashback versions query clause from this table.@NotNull VersionsBetweenAndStep<R,
Timestamp> Create anSQLDialect.ORACLE
flashback versions query clause from this table.Add aWHERE
clause to the table.Add aWHERE
clause to the table.Add aWHERE
clause to the table.where
(Collection<? extends Condition> conditions) Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.Add aWHERE
clause to the table.Add aWHERE
clause to the table.whereExists
(Select<?> select) Add aWHERE EXISTS
clause to the table.whereNotExists
(Select<?> select) Add aWHERE NOT EXISTS
clause to the table.Specify a SQL Server style table hint for query optimisation.Specify a SQL Server style table hint for query optimisation.Specify a SQL Server style table hint for query optimisation.Specify a SQL Server style table hint for query optimisation.Methods 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, types
Methods inherited from interface org.jooq.Named
$name, getComment, getCommentPart, getName, getQualifiedName, getUnqualifiedName
Methods inherited from interface org.jooq.Qualified
$schema, getCatalog, getSchema
Methods inherited from interface org.jooq.QueryPart
$replace, $replace, $traverse, $traverse, hashCode, toString
Methods inherited from interface org.jooq.RecordQualifier
getDataType, getPackage, getRecordType, newRecord
Methods inherited from interface org.jooq.SelectField
as, convert, convert, convert, convertFrom, convertFrom, convertTo, convertTo
Methods inherited from interface org.jooq.TableLike
asMultiset, asMultiset, asMultiset, asMultiset, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable, asTable
Methods inherited from interface org.jooq.Typed
$dataType, getBinding, getConverter, getDataType, getDataType, getType
-
Method Details
-
getTableType
Get the table type. -
getOptions
Get the table options. -
recordType
The record type produced by this table. -
getIdentity
Retrieve the table'sIDENTITY
information, if available.With SQL:2003, the concept of
IDENTITY
columns was introduced in most RDBMS. These are special kinds of columns that have auto-increment functionality whenINSERT
statements are performed.An
IDENTITY
column is usually part of thePRIMARY KEY
or of aUNIQUE KEY
in the table, although in some RDBMS, this is not required. There can only be at most oneIDENTITY
column.Note: Unfortunately, this is not supported in the Oracle dialect, where identities emulated by triggers cannot be formally detected.
- Returns:
- The table's
IDENTITY
information, ornull
, if no such information is available.
-
getPrimaryKey
Retrieve the table's primary key- Returns:
- The primary key. This is never
null
for an updatable table.
-
getRecordVersion
A "version" field holding record version information used for optimistic lockingjOOQ supports optimistic locking in
UpdatableRecord.store()
andUpdatableRecord.delete()
ifSettings.isExecuteWithOptimisticLocking()
is enabled. Optimistic locking is performed in a singleUPDATE
orDELETE
statement if tables provide a "version" or "timestamp" field, or in two steps using an additionalSELECT … FOR UPDATE
statement otherwise.This method is overridden in generated subclasses if their corresponding tables have been configured accordingly. A table may have both a "version" and a "timestamp" field.
- Returns:
- The "version" field, or
null
, if this table has no "version" field. - See Also:
-
getRecordTimestamp
A "timestamp" field holding record timestamp information used for optimistic lockingjOOQ supports optimistic locking in
UpdatableRecord.store()
andUpdatableRecord.delete()
ifSettings.isExecuteWithOptimisticLocking()
is enabled. Optimistic locking is performed in a singleUPDATE
orDELETE
statement if tables provide a "version" or "timestamp" field, or in two steps using an additionalSELECT … FOR UPDATE
statement otherwise.This method is overridden in generated subclasses if their corresponding tables have been configured accordingly. A table may have both a "version" and a "timestamp" field.
- Returns:
- The "timestamp" field, or
null
, if this table has no "timestamp" field. - See Also:
-
getIndexes
Retrieve all of the table's indexes.- Returns:
- All indexes. This is never
null
.
-
getKeys
Retrieve all of the table's primary and unique keys.- Returns:
- All keys. This is never
null
. This is never empty for aTable
with agetPrimaryKey()
.
-
getUniqueKeys
Retrieve all of the table's unique keys.- Returns:
- All keys. This is never
null
.
-
getReferencesFrom
Get a list ofFOREIGN KEY
's of a specific table, referencing a this table.This will recurse into joined tables.
- Type Parameters:
O
- The other table's record type- Parameters:
other
- The other table of the foreign key relationship- Returns:
- Some other table's
FOREIGN KEY
's towards an this table. This is nevernull
.
-
getReferences
Get the list ofFOREIGN KEY
's of this table- Returns:
- This table's
FOREIGN KEY
's. This is nevernull
.
-
getReferencesTo
Get a list ofFOREIGN KEY
's of this table, referencing a specific table.This will recurse into joined tables.
- Type Parameters:
O
- The other table's record type- Parameters:
other
- The other table of the foreign key relationship- Returns:
- This table's
FOREIGN KEY
's towards an other table. This is nevernull
.
-
getChecks
Get a list ofCHECK
constraints of this table. -
at
A table reference of this table at a givenLink
.- See Also:
-
at
A table reference of this table at a givenLink
.- See Also:
-
at
A table reference of this table at a givenLink
. -
asterisk
Create a qualified asterisk expression from this table (table.*
) for use withSELECT
.When using an asterisk, jOOQ will let the database server define the order of columns, as well as which columns are included in the result set. If using jOOQ with generated code, this may conflict with the column set and its ordering as defined at code generation time, meaning columns may be in a different order, there may be fewer or more columns than expected. It is usually better to list columns explicitly.
- See Also:
-
as
Create an alias for this table.Note that the case-sensitivity of the returned table depends on
Settings.getRenderQuotedNames()
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects!This method works both to alias the table as well as alias the table in its
SelectField
form via theSelectField.as(String)
override. In order to alias only the projected table expression, useDSL.field(SelectField)
to wrap this table into aField
first.- Specified by:
as
in interfaceSelectField<R extends Record>
- Parameters:
alias
- The alias name- Returns:
- The table alias
-
as
Create an alias for this table and its fields.Note that the case-sensitivity of the returned table and columns depends on
Settings.getRenderQuotedNames()
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects!Derived column lists for table references
Note, not all databases support derived column lists for their table aliases. On the other hand, some databases do support derived column lists, but only for derived tables. jOOQ will try to turn table references into derived tables to make this syntax work. In other words, the following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM my_table t(a, b) -- Nesting table references within derived tables (e.g. SQL Server) SELECT t.a, t.b FROM ( SELECT * FROM my_table ) t(a, b)
Derived column lists for derived tables
Other databases may not support derived column lists at all, but they do support common table expressions. The following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM ( SELECT 1, 2 ) AS t(a, b) -- Using UNION ALL to produce column names (e.g. MySQL) SELECT t.a, t.b FROM ( SELECT null a, null b FROM DUAL WHERE 1 = 0 UNION ALL SELECT 1, 2 FROM DUAL ) t
- Parameters:
alias
- The alias namefieldAliases
- The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.- Returns:
- The table alias
-
as
Create an alias for this table and its fields.Note that the case-sensitivity of the returned table and columns depends on
Settings.getRenderQuotedNames()
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects!Derived column lists for table references
Note, not all databases support derived column lists for their table aliases. On the other hand, some databases do support derived column lists, but only for derived tables. jOOQ will try to turn table references into derived tables to make this syntax work. In other words, the following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM my_table t(a, b) -- Nesting table references within derived tables (e.g. SQL Server) SELECT t.a, t.b FROM ( SELECT * FROM my_table ) t(a, b)
Derived column lists for derived tables
Other databases may not support derived column lists at all, but they do support common table expressions. The following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM ( SELECT 1, 2 ) AS t(a, b) -- Using UNION ALL to produce column names (e.g. MySQL) SELECT t.a, t.b FROM ( SELECT null a, null b FROM DUAL WHERE 1 = 0 UNION ALL SELECT 1, 2 FROM DUAL ) t
- Parameters:
alias
- The alias namefieldAliases
- The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.- Returns:
- The table alias
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(String alias, Function<? super Field<?>, ? extends String> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(String, String...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as("t1", f ->"prefix_" + f.getName());
- Parameters:
alias
- The alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(String alias, BiFunction<? super Field<?>, ? super Integer, ? extends String> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(String, String...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as("t1", (f, i) ->"column" + i);
- Parameters:
alias
- The alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
as
Create an alias for this table.Note that the case-sensitivity of the returned table depends on
Settings.getRenderQuotedNames()
and theName
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - useDSL.unquotedName(String...)
for case-insensitive aliases.If the argument
Name.getName()
is qualified, then theName.last()
part will be used.This method works both to alias the table as well as alias the table in its
SelectField
form via theSelectField.as(String)
override. In order to alias only the projected table expression, useDSL.field(SelectField)
to wrap this table into aField
- Specified by:
as
in interfaceSelectField<R extends Record>
- Parameters:
alias
- The alias name- Returns:
- The table alias
-
as
Create an alias for this table and its fields.Note that the case-sensitivity of the returned table depends on
Settings.getRenderQuotedNames()
and theName
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - useDSL.unquotedName(String...)
for case-insensitive aliases.If the argument
Name.getName()
is qualified, then theName.last()
part will be used.Derived column lists for table references
Note, not all databases support derived column lists for their table aliases. On the other hand, some databases do support derived column lists, but only for derived tables. jOOQ will try to turn table references into derived tables to make this syntax work. In other words, the following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM my_table t(a, b) -- Nesting table references within derived tables (e.g. SQL Server) SELECT t.a, t.b FROM ( SELECT * FROM my_table ) t(a, b)
Derived column lists for derived tables
Other databases may not support derived column lists at all, but they do support common table expressions. The following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM ( SELECT 1, 2 ) AS t(a, b) -- Using UNION ALL to produce column names (e.g. MySQL) SELECT t.a, t.b FROM ( SELECT null a, null b FROM DUAL WHERE 1 = 0 UNION ALL SELECT 1, 2 FROM DUAL ) t
- Parameters:
alias
- The alias namefieldAliases
- The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.- Returns:
- The table alias
-
as
Create an alias for this table and its fields.Note that the case-sensitivity of the returned table depends on
Settings.getRenderQuotedNames()
and theName
. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - useDSL.unquotedName(String...)
for case-insensitive aliases.If the argument
Name.getName()
is qualified, then theName.last()
part will be used.Derived column lists for table references
Note, not all databases support derived column lists for their table aliases. On the other hand, some databases do support derived column lists, but only for derived tables. jOOQ will try to turn table references into derived tables to make this syntax work. In other words, the following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM my_table t(a, b) -- Nesting table references within derived tables (e.g. SQL Server) SELECT t.a, t.b FROM ( SELECT * FROM my_table ) t(a, b)
Derived column lists for derived tables
Other databases may not support derived column lists at all, but they do support common table expressions. The following statements are equivalent:
-- Using derived column lists to rename columns (e.g. Postgres) SELECT t.a, t.b FROM ( SELECT 1, 2 ) AS t(a, b) -- Using UNION ALL to produce column names (e.g. MySQL) SELECT t.a, t.b FROM ( SELECT null a, null b FROM DUAL WHERE 1 = 0 UNION ALL SELECT 1, 2 FROM DUAL ) t
- Parameters:
alias
- The alias namefieldAliases
- The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.- Returns:
- The table alias
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(Name alias, Function<? super Field<?>, ? extends Name> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(Name, Name...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as("t1", f ->"prefix_" + f.getName());
- Parameters:
alias
- The alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(Name alias, BiFunction<? super Field<?>, ? super Integer, ? extends Name> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(Name, Name...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as("t1", (f, i) ->"column" + i);
- Parameters:
alias
- The alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
as
Create an alias for this table based on another table's name.- Parameters:
otherTable
- The other table whose name this table is aliased with.- Returns:
- The table alias.
-
as
Create an alias for this table based on another table's name.- Parameters:
otherTable
- The other table whose name this table is aliased with.otherFields
- The other fields whose field name this table's fields are aliased with.- Returns:
- The table alias.
-
as
@NotNull @Support @NotNull Table<R> as(Table<?> otherTable, Collection<? extends Field<?>> otherFields) Create an alias for this table based on another table's name.- Parameters:
otherTable
- The other table whose name this table is aliased with.otherFields
- The other fields whose field name this table's fields are aliased with.- Returns:
- The table alias.
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(Table<?> otherTable, Function<? super Field<?>, ? extends Field<?>> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(Table, Field...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as(MY_OTHER_TABLE, f ->MY_OTHER_TABLE.field(f));
- Parameters:
otherTable
- The other table whose name is used as alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
as
@Deprecated(forRemoval=true, since="3.14") @NotNull @Support @NotNull Table<R> as(Table<?> otherTable, BiFunction<? super Field<?>, ? super Integer, ? extends Field<?>> aliasFunction) Deprecated, for removal: This API element is subject to removal in a future version.- 3.14.0 - [#10156] - These methods will be removed without replacement from a future jOOQ. They offer convenience that is unidiomatic for jOOQ's DSL, without offering functionality that would not be possible otherwise - yet they add complexity in jOOQ's internals.Create an alias for this table and its fields.This works like
as(Table, Field...)
, except that field aliases are provided by a function. This is useful, for instance, to prefix all columns with a common prefix:MY_TABLE.as("t1", (f, i) ->"column" + i);
- Parameters:
otherTable
- The other table whose name is used as alias namealiasFunction
- The function providing field aliases.- Returns:
- The table alias
-
where
Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
where
Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
where
Add aWHERE
clause to the table, connecting them with each other withOperator.AND
.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
where
Add aWHERE
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
where
Add aWHERE
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
where
Add aWHERE
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
where
Add aWHERE
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
where
Add aWHERE
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
whereExists
Add aWHERE EXISTS
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
whereNotExists
Add aWHERE NOT EXISTS
clause to the table.The resulting table acts like a derived table that projects all of this table's columns and filters by the argument
Condition
. If syntactically reasonable, the derived table may be inlined to the query that selects from the resulting table. -
join
Join a table to this table using aJoinType
Depending on the
JoinType
, a subsequentTableOnStep.on(Condition)
orTableOnStep.using(Field...)
clause is required. If it is required but omitted, aDSL.trueCondition()
, i.e.1 = 1
condition will be rendered -
join
INNER JOIN
a table to this table.A synonym for
innerJoin(TableLike)
.- See Also:
-
join
INNER JOIN
a table to this table.A synonym for
innerJoin(String)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
join
INNER JOIN
a table to this table.A synonym for
innerJoin(String)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
join
INNER JOIN
a table to this table.A synonym for
innerJoin(String, Object...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
join
INNER JOIN
a table to this table.A synonym for
innerJoin(String, QueryPart...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
join
INNER JOIN
a table to this table.A synonym for
innerJoin(Name)
.- See Also:
-
innerJoin
INNER JOIN
a table to this table. -
innerJoin
INNER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
innerJoin
INNER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
innerJoin
INNER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
innerJoin
INNER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
innerJoin
INNER JOIN
a table to this table.- See Also:
-
partitionBy
Add aPARTITION BY
clause to the left hand side of theOUTER JOIN
keywords -
partitionBy
@NotNull @Support(ORACLE) @Pro @NotNull TableOuterJoinStep<Record> partitionBy(Collection<? extends Field<?>> fields) Add aPARTITION BY
clause to the left hand side of theOUTER JOIN
keywords -
leftJoin
LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(TableLike)
.- See Also:
-
leftJoin
LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(String)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
leftJoin
LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(String)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
leftJoin
@NotNull @Support @PlainSQL @NotNull TablePartitionByStep<Record> leftJoin(String sql, Object... bindings) LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(String, Object...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
leftJoin
@NotNull @Support @PlainSQL @NotNull TablePartitionByStep<Record> leftJoin(String sql, QueryPart... parts) LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(String, QueryPart...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
leftJoin
LEFT OUTER JOIN
a table to this table.A synonym for
leftOuterJoin(Name)
.- See Also:
-
leftOuterJoin
LEFT OUTER JOIN
a table to this table. -
leftOuterJoin
LEFT OUTER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
leftOuterJoin
LEFT OUTER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
leftOuterJoin
@NotNull @Support @PlainSQL @NotNull TablePartitionByStep<Record> leftOuterJoin(String sql, Object... bindings) LEFT OUTER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
leftOuterJoin
@NotNull @Support @PlainSQL @NotNull TablePartitionByStep<Record> leftOuterJoin(String sql, QueryPart... parts) LEFT OUTER JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
leftOuterJoin
LEFT OUTER JOIN
a table to this table.- See Also:
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TablePartitionByStep<Record> rightJoin(TableLike<?> table) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(TableLike)
.This is only possible where the underlying RDBMS supports it.
- See Also:
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightJoin(SQL sql) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(String)
.This is only possible where the underlying RDBMS supports it.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightJoin(String sql) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(String)
.This is only possible where the underlying RDBMS supports it.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightJoin(String sql, Object... bindings) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(String, Object...)
.This is only possible where the underlying RDBMS supports it.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightJoin(String sql, QueryPart... parts) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(String, QueryPart...)
.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
rightJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TablePartitionByStep<Record> rightJoin(Name name) RIGHT OUTER JOIN
a table to this table.A synonym for
rightOuterJoin(Name)
.This is only possible where the underlying RDBMS supports it
- See Also:
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TablePartitionByStep<Record> rightOuterJoin(TableLike<?> table) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightOuterJoin(SQL sql) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightOuterJoin(String sql) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightOuterJoin(String sql, Object... bindings) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TablePartitionByStep<Record> rightOuterJoin(String sql, QueryPart... parts) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
rightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TablePartitionByStep<Record> rightOuterJoin(Name name) RIGHT OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
- See Also:
-
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TableOnStep<Record> fullJoin(TableLike<?> table) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(TableLike)
. -
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullJoin(SQL sql) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(SQL)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullJoin(String sql) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(String)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullJoin(String sql, Object... bindings) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(String, Object...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullJoin(String sql, QueryPart... parts) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(String, QueryPart...)
.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TableOnStep<Record> fullJoin(Name name) FULL OUTER JOIN
a table to this table.A synonym for
fullOuterJoin(Name)
. -
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TableOnStep<Record> fullOuterJoin(TableLike<?> table) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
-
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullOuterJoin(SQL sql) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullOuterJoin(String sql) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullOuterJoin(String sql, Object... bindings) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull TableOnStep<Record> fullOuterJoin(String sql, QueryPart... parts) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
fullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HANA,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull TableOnStep<Record> fullOuterJoin(Name name) FULL OUTER JOIN
a table to this table.This is only possible where the underlying RDBMS supports it
- See Also:
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> crossJoin(TableLike<?> table) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossJoin(SQL sql) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossJoin(String sql) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossJoin(String sql, Object... bindings) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossJoin(String sql, QueryPart... parts) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
crossJoin
@NotNull @Support({ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,IGNITE,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,REDSHIFT,SNOWFLAKE,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> crossJoin(Name name) CROSS JOIN
a table to this table.If this syntax is unavailable, it is emulated with a regular
INNER JOIN
. The following two constructs are equivalent:A cross join B A join B on 1 = 1
- See Also:
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
- See Also:
-
naturalJoin
NATURAL JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalLeftOuterJoin
NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
-
naturalLeftOuterJoin
NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalLeftOuterJoin
NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalLeftOuterJoin
@NotNull @Support @PlainSQL @NotNull Table<Record> naturalLeftOuterJoin(String sql, Object... bindings) NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalLeftOuterJoin
@NotNull @Support @PlainSQL @NotNull Table<Record> naturalLeftOuterJoin(String sql, QueryPart... parts) NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalLeftOuterJoin
NATURAL LEFT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
- See Also:
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> naturalRightOuterJoin(TableLike<?> table) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalRightOuterJoin(SQL sql) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalRightOuterJoin(String sql) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalRightOuterJoin(String sql, Object... bindings) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalRightOuterJoin(String sql, QueryPart... parts) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalRightOuterJoin
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,BIGQUERY,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HSQLDB,INFORMIX,INGRES,MARIADB,MEMSQL,MYSQL,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> naturalRightOuterJoin(Name name) NATURAL RIGHT OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
- See Also:
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> naturalFullOuterJoin(TableLike<?> table) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalFullOuterJoin(SQL sql) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalFullOuterJoin(String sql) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalFullOuterJoin(String sql, Object... bindings) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> naturalFullOuterJoin(String sql, QueryPart... parts) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
naturalFullOuterJoin
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,COCKROACHDB,DB2,EXASOL,FIREBIRD,HSQLDB,INFORMIX,INGRES,ORACLE,POSTGRES,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,TERADATA,VERTICA,YUGABYTEDB}) @NotNull Table<Record> naturalFullOuterJoin(Name name) NATURAL FULL OUTER JOIN
a table to this table.If this is not supported by your RDBMS, then jOOQ will try to emulate this behaviour using the information provided in this query.
- See Also:
-
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @NotNull Table<Record> crossApply(TableLike<?> table) CROSS APPLY
a table to this table. -
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossApply(SQL sql) CROSS APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossApply(String sql) CROSS APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossApply(String sql, Object... bindings) CROSS APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> crossApply(String sql, QueryPart... parts) CROSS APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
crossApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SNOWFLAKE,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @NotNull Table<Record> crossApply(Name name) CROSS APPLY
a table to this table.- See Also:
-
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @NotNull Table<Record> outerApply(TableLike<?> table) OUTER APPLY
a table to this table. -
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> outerApply(SQL sql) OUTER APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> outerApply(String sql) OUTER APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> outerApply(String sql, Object... bindings) OUTER APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @PlainSQL @NotNull Table<Record> outerApply(String sql, QueryPart... parts) OUTER APPLY
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
outerApply
@NotNull @Support({AURORA_POSTGRES,BIGQUERY,DB2,FIREBIRD_4_0,ORACLE12C,POSTGRES_9_3,SQLDATAWAREHOUSE,SQLSERVER,SYBASE,YUGABYTEDB}) @NotNull Table<Record> outerApply(Name name) OUTER APPLY
a table to this table.- See Also:
-
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @NotNull TableOnStep<Record> straightJoin(TableLike<?> table) STRAIGHT_JOIN
a table to this table. -
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @PlainSQL @NotNull TableOnStep<Record> straightJoin(SQL sql) STRAIGHT_JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @PlainSQL @NotNull TableOnStep<Record> straightJoin(String sql) STRAIGHT_JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
- See Also:
-
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @PlainSQL @NotNull TableOnStep<Record> straightJoin(String sql, Object... bindings) STRAIGHT_JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @PlainSQL @NotNull TableOnStep<Record> straightJoin(String sql, QueryPart... parts) STRAIGHT_JOIN
a table to this table.NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
straightJoin
@NotNull @Support({AURORA_MYSQL,MARIADB,MEMSQL,MYSQL}) @PlainSQL @NotNull TableOnStep<Record> straightJoin(Name name) STRAIGHT_JOIN
a table to this table.- See Also:
-
eq
TheEQ
operator. -
equal
TheEQUAL
operator, an alias for theEQ
operator. -
ne
TheNE
operator. -
notEqual
TheNOT_EQUAL
operator, an alias for theNE
operator. -
rowid
@NotNull @Support({DB2,EXASOL,H2,INFORMIX,ORACLE,POSTGRES,SQLITE,SQLSERVER}) @NotNull Field<RowId> rowid()TheROWID
operator.Get a
table.rowid
reference from this table.A rowid value describes the physical location of a row on the disk, which can be used as a replacement for a primary key in some situations - especially within a query, e.g. to self-join a table:
-- Emulating this MySQL statement... DELETE FROM x ORDER BY x.y LIMIT 1 -- ... in other databases DELETE FROM x WHERE x.rowid IN ( SELECT x.rowid FROM x ORDER BY x.a LIMIT 1 )
It is not recommended to use
rowid
values in client applications as actual row identifiers as the database system may move a row to a different physical location at any time, thus changing the rowid value. In general, use primary keys, instead. -
equals
Check whether thisQueryPart
can be considered equal to anotherQueryPart
.In general,
QueryPart
equality is defined in terms ofQueryPart.toString()
equality. In other words, two query parts are considered equal if their rendered SQL (with inlined bind variables) is equal. This means that the two query parts do not necessarily have to be of the same type.Some
QueryPart
implementations may choose to override this behaviour for improved performance, asQueryPart.toString()
is an expensive operation, if called many times.Watch out! This is
Object.equals(Object)
, not a jOOQ DSL feature! -
useIndex
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndex("MY_INDEX") .fetch();
-
useIndexForJoin
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForJoin("MY_INDEX") .fetch();
-
useIndexForOrderBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX") .fetch();
-
useIndexForGroupBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX") .fetch();
-
ignoreIndex
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndex("MY_INDEX") .fetch();
-
ignoreIndexForJoin
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForJoin("MY_INDEX") .fetch();
-
ignoreIndexForOrderBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX") .fetch();
-
ignoreIndexForGroupBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX") .fetch();
-
forceIndex
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndex("MY_INDEX") .fetch();
-
forceIndexForJoin
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForJoin("MY_INDEX") .fetch();
-
forceIndexForOrderBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX") .fetch();
-
forceIndexForGroupBy
Specify a MySQL style table hint for query optimisation.Example:
create.select() .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX") .fetch();
-
with
Specify a SQL Server style table hint for query optimisation.This makes sense only on an actual database table or view, not on other composed table sources.
Example:
create.select() .from(BOOK.as("b").with("READUNCOMMITTED") .fetch();
For
SQLDialect.ORACLE
style hints, seeSelectFromStep.hint(String)
andSelectQuery.addHint(String)
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
with
@NotNull @Support({SQLSERVER,SYBASE}) @PlainSQL @Pro @NotNull Table<R> with(String hint, Object... binds) Specify a SQL Server style table hint for query optimisation.This makes sense only on an actual database table or view, not on other composed table sources.
Example:
create.select() .from(BOOK.as("b").with("READUNCOMMITTED") .fetch();
For
SQLDialect.ORACLE
style hints, seeSelectFromStep.hint(String)
andSelectQuery.addHint(String)
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
with
@NotNull @Support({SQLSERVER,SYBASE}) @PlainSQL @Pro @NotNull Table<R> with(String hint, QueryPart... parts) Specify a SQL Server style table hint for query optimisation.This makes sense only on an actual database table or view, not on other composed table sources.
Example:
create.select() .from(BOOK.as("b").with("READUNCOMMITTED") .fetch();
For
SQLDialect.ORACLE
style hints, seeSelectFromStep.hint(String)
andSelectQuery.addHint(String)
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
with
Specify a SQL Server style table hint for query optimisation.This makes sense only on an actual database table or view, not on other composed table sources.
Example:
create.select() .from(BOOK.as("b").with("READUNCOMMITTED") .fetch();
For
SQLDialect.ORACLE
style hints, seeSelectFromStep.hint(String)
andSelectQuery.addHint(String)
NOTE: When inserting plain SQL into jOOQ objects, you must guarantee syntax integrity. You may also create the possibility of malicious SQL injection. Be sure to properly use bind variables and/or escape literals when concatenated into SQL clauses!
-
pivot
@NotNull @Support({ORACLE11G,SNOWFLAKE,SQLSERVER}) @Pro @NotNull PivotForStep pivot(Field<?> aggregateFunction) Create a newTABLE
reference from this table, pivoting it into another form.- Parameters:
aggregateFunction
- The aggregate function used for pivoting.- Returns:
- A DSL object to create the
PIVOT
expression
-
pivot
Create a newTABLE
reference from this table, pivoting it into another form.- Parameters:
aggregateFunctions
- The aggregate functions used for pivoting.- Returns:
- A DSL object to create the
PIVOT
expression
-
pivot
@NotNull @Support(ORACLE11G) @Pro @NotNull PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions) Create a newTABLE
reference from this table, pivoting it into another form.- Parameters:
aggregateFunctions
- The aggregate functions used for pivoting.- Returns:
- A DSL object to create the
PIVOT
expression - See Also:
-
divideBy
@NotNull @Support({ACCESS,ASE,AURORA_MYSQL,AURORA_POSTGRES,COCKROACHDB,CUBRID,DB2,DERBY,EXASOL,FIREBIRD,H2,HANA,HSQLDB,INFORMIX,INGRES,MARIADB,MYSQL,ORACLE,POSTGRES,REDSHIFT,SQLDATAWAREHOUSE,SQLITE,SQLSERVER,SYBASE,TERADATA,VERTICA}) @NotNull DivideByOnStep divideBy(Table<?> divisor) Create a newTABLE
reference from this table, applying relational division.Relational division is the inverse of a cross join operation. The following is an approximate definition of a relational division:
Assume the following cross join / cartesian product C = A × B Then it can be said that A = C ÷ B B = C ÷ A
With jOOQ, you can simplify using relational divisions by using the following syntax:
C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)
The above roughly translates to
SELECT DISTINCT C.TEXT FROM C "c1" WHERE NOT EXISTS ( SELECT 1 FROM B WHERE NOT EXISTS ( SELECT 1 FROM C "c2" WHERE "c2".TEXT = "c1".TEXT AND "c2".ID = B.C_ID ) )
Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the
on(…)
andreturning(…)
clauses.For more information about relational division and some nice, real-life examples, see
- http ://en.wikipedia.org/wiki/Relational_algebra#Division
- http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the- sql-of-relational-division/
This has been observed to work with all dialects
-
leftSemiJoin
A syntheticLEFT SEMI JOIN
clause that translates to an equivalentEXISTS
predicate.The following two SQL snippets are semantically equivalent:
-- Using LEFT SEMI JOIN FROM A LEFT SEMI JOIN B ON A.ID = B.ID -- Using WHERE EXISTS FROM A WHERE EXISTS ( SELECT 1 FROM B WHERE A.ID = B.ID )
Notice that according to Relational algebra's understanding of left semi join, the right hand side of the left semi join operator is not projected, i.e. it cannot be accessed from
WHERE
orSELECT
or any other clause thanON
. -
leftAntiJoin
A syntheticLEFT ANTI JOIN
clause that translates to an equivalentNOT EXISTS
predicate.The following two SQL snippets are semantically equivalent:
-- Using LEFT ANTI JOIN FROM A LEFT ANTI JOIN B ON A.ID = B.ID -- Using WHERE NOT EXISTS FROM A WHERE NOT EXISTS ( SELECT 1 FROM B WHERE A.ID = B.ID )
Notice that according to Relational algebra's understanding of left anti join, the right hand side of the left anti join operator is not projected, i.e. it cannot be accessed from
WHERE
orSELECT
or any other clause thanON
. -
for_
@NotNull @Support({COCKROACHDB,DB2,HSQLDB,MARIADB_10_3,ORACLE12C,SQLSERVER2016}) @Pro @NotNull Table<R> for_(PeriodSpecification periodSpecification) Create a reference to a temporal table with aPeriodSpecification
for usage inSelect
. -
forPortionOf
@NotNull @Support({DB2,MARIADB_10_3}) @Pro @NotNull Table<R> forPortionOf(PeriodSpecification periodSpecification) -
versionsBetweenScn
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Number> versionsBetweenScn(Number scn) Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
versionsBetweenScn
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Number> versionsBetweenScn(Field<? extends Number> scn) Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
versionsBetweenScnMinvalue
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Number> versionsBetweenScnMinvalue()Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
versionsBetweenTimestamp
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Timestamp timestamp) Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
versionsBetweenTimestamp
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Field<Timestamp> timestamp) Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
versionsBetweenTimestampMinvalue
@NotNull @Support(ORACLE) @Pro @NotNull VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestampMinvalue()Create anSQLDialect.ORACLE
flashback versions query clause from this table. -
asOfScn
Create anSQLDialect.ORACLE
flashback query clause from this table. -
asOfScn
Create anSQLDialect.ORACLE
flashback query clause from this table. -
asOfTimestamp
Create anSQLDialect.ORACLE
flashback query clause from this table. -
asOfTimestamp
Create anSQLDialect.ORACLE
flashback query clause from this table. -
from
The inverse operation ofRecord.into(Table)
.This method can be used in its method reference form conveniently on a generated table, for instance, when mapping records in a stream:
DSL.using(configuration) .fetch("select * from t") .stream() .map(MY_TABLE::into) .forEach(System.out::println);
-