Module org.jooq
Package org.jooq.impl

Class TableImpl<R extends Record>

java.lang.Object
org.jooq.impl.TableImpl<R>
All Implemented Interfaces:
Serializable, Fields, GroupField, Named, Qualified, QueryPart, QueryPartInternal, RecordQualifier<R>, SelectField<R>, SelectFieldOrAsterisk, Table<R>, TableLike<R>, Typed<R>
Direct Known Subclasses:
CustomTable

@Internal public class TableImpl<R extends Record> extends Object
A common base type for tables

This type is for JOOQ INTERNAL USE only. Do not reference directly

Author:
Lukas Eder
See Also:
  • Field Details

    • parameters

      protected final Field<?>[] parameters
  • Constructor Details

  • Method Details

    • aliased

      @Internal protected boolean aliased()
      Check if this table already aliases another one.

      This method is used by generated code of table valued functions. Do not call this method directly.

    • isSynthetic

      @Internal protected boolean isSynthetic()
      Check if this table is a synthetic table.

      This method is used by generated code of synthetic views. Do not call this method directly.

    • isSimple

      @Internal public final boolean isSimple(Context<?> ctx)
    • fieldsRow

      public Row fieldsRow()
      Description copied from interface: Fields
      Get all fields known to this type as a Row.
      Specified by:
      fieldsRow in interface Fields
    • clauses

      public final Clause[] clauses(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      The Clauses that are represented by this query part.

      QueryParts can specify several Clauses for which an event will be emitted before (in forward order) and after (in reverse order) visiting the the query part through Context.visit(QueryPart)

      This method is for JOOQ INTERNAL USE only. Do not reference directly

      Specified by:
      clauses in interface QueryPartInternal
      Returns:
      The Clauses represented by this query part or null or an empty array if this query part does not represent a clause.
    • accept

      public final void accept(Context<?> ctx)
      Description copied from interface: QueryPartInternal
      This QueryPart can accept a Context object in order to render a SQL string or to bind its variables.
      Specified by:
      accept in interface QueryPartInternal
    • as

      public Table<R> as(Name as)
      Subclasses may override this method to provide custom aliasing implementations

      Create an alias for this table.

      Note that the case-sensitivity of the returned table depends on Settings.getRenderQuotedNames() and the Name. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - use DSL.unquotedName(String...) for case-insensitive aliases.

      If the argument Name.getName() is qualified, then the Name.last() part will be used.

      This method works both to alias the table as well as alias the table in its SelectField form via the SelectField.as(String) override. In order to alias only the projected table expression, use DSL.field(SelectField) to wrap this table into a Field

      Specified by:
      as in interface SelectField<R extends Record>
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      as - The alias name
      Returns:
      The table alias
    • as

      public Table<R> as(Name as, Name... fieldAliases)
      Subclasses may override this method to provide custom aliasing implementations

      Create an alias for this table and its fields.

      Note that the case-sensitivity of the returned table depends on Settings.getRenderQuotedNames() and the Name. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - use DSL.unquotedName(String...) for case-insensitive aliases.

      If the argument Name.getName() is qualified, then the Name.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
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      as - The alias name
      fieldAliases - The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.
      Returns:
      The table alias
    • rename

      public Table<R> rename(String rename)
    • rename

      public Table<R> rename(Name rename)
    • rename

      public Table<R> rename(Table<?> rename)
    • getRecordType

      public Class<? extends R> getRecordType()
      Subclasses must override this method if they use the generic type parameter R for other types than Record

      The record type produced by this UDT or Table.

      Specified by:
      getRecordType in interface RecordQualifier<R extends Record>
    • declaresTables

      public boolean declaresTables()
      Subclasses may override this
      Specified by:
      declaresTables in interface QueryPartInternal
    • field

      public Field<?> field(String name)
      Description copied from interface: Fields
      Get a field known to this type by unqualified name, or null if no field is known to this type by this name.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The unqualified name of the field
    • field

      public <T> Field<T> field(String name, Class<T> type)
      Description copied from interface: Fields
      Get a field known to this type by unqualified name coerced to type, or null if no field is known to this type by this name.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The unqualified name of the field
      type - The type to coerce the resulting field to
    • field

      public <T> Field<T> field(String name, DataType<T> dataType)
      Description copied from interface: Fields
      Get a field known to this type by unqualified name coerced to dataType, or null if no field is known to this type by this name.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The unqualified name of the field
      dataType - The data type to coerce the resulting field to
    • field

      public Field<?> field(Name name)
      Description copied from interface: Fields
      Get a field known to this type by qualified name, or null if no field is known to this type by this name.

      This will return:

      • A field whose name is equal to the argument field's name (exact matching fully qualified name).
      • A field whose name is equal to the argument field's name (partially matching qualified name).
      • A field whose name is equal to the unqualified name of the argument field.
      • null otherwise.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The qualified name of the field
    • field

      public <T> Field<T> field(Name name, Class<T> type)
      Description copied from interface: Fields
      Get a field known to this type by qualified name coerced to type, or null if no field is known to this type by this name.

      This will return:

      • A field whose name is equal to the argument field's name (exact matching fully qualified name).
      • A field whose name is equal to the argument field's name (partially matching qualified name).
      • A field whose name is equal to the unqualified name of the argument field.
      • null otherwise.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The qualified name of the field
      type - The type to coerce the resulting field to
    • field

      public <T> Field<T> field(Name name, DataType<T> dataType)
      Description copied from interface: Fields
      Get a field known to this type by qualified name coerced to dataType, or null if no field is known to this type by this name.

      This will return:

      • A field whose name is equal to the argument field's name (exact matching fully qualified name).
      • A field whose name is equal to the argument field's name (partially matching qualified name).
      • A field whose name is equal to the unqualified name of the argument field.
      • null otherwise.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
      Parameters:
      name - The qualified name of the field
      dataType - The data type to coerce the resulting field to
    • $traverse

      public final <X> X $traverse(Traverser<?,X> traverser)
      Description copied from interface: QueryPart
      Traverser this QueryPart expression tree using a composable Traverser, producing a result.

      This offers a generic way to traverse expression trees to translate the tree to arbitrary other data structures. The simplest traversal would just count all the tree elements:

      
       int count = CUSTOMER.NAME.eq(1).$traverse(0, (i, p) -> i + 1);
       

      The same can be achieved by translating the JDK Collector API to the Traverser API using Traversers.collecting(Collector).

      
       CUSTOMER.NAME.eq(1).$traverse(Traversers.collecting(Collectors.counting()));
       

      Unlike a Collector, a Traverser is optimised for tree traversal, not stream traversal:

      • Is not designed for parallelism
      • It can Traverser.abort() traversal early when the result can be produced early (e.g. when running Traversers.containing(QueryPart), and a result has been found).
      • It can decide whether to Traverser.recurse() into a QueryPart subtree, or whether that is not necessary or even undesirable, e.g. to prevent entering new subquery scopes.
      • Unlike a Collector, which can use its Collector.accumulator() to accumulate each element only once, in tree traversal, it's desirable to be able to distinguish between accumulating an item Traverser.before() or Traverser.after() recursing into it. This is useful e.g. to wrap each tree node in XML opening and closing tags.

      This is a commercial jOOQ edition only feature.

      Specified by:
      $traverse in interface QueryPart
    • $replace

      public final QueryPart $replace(Replacer replacer)
      Description copied from interface: QueryPart
      Traverse a QueryPart hierarchy and recursively replace its elements by alternatives.

      This is a commercial jOOQ edition only feature.

      Specified by:
      $replace in interface QueryPart
    • equals

      public boolean equals(Object that)
      Description copied from interface: QueryPart
      Check whether this QueryPart can be considered equal to another QueryPart.

      In general, QueryPart equality is defined in terms of QueryPart.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, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      equals in interface QueryPart
      Specified by:
      equals in interface Table<R extends Record>
      Parameters:
      that - The other QueryPart
      Returns:
      Whether the two query parts are equal
    • getType

      public final Class<R> getType()
      Description copied from interface: Typed
      The Java type of the object.
      Specified by:
      getType in interface Typed<R extends Record>
    • getDataType

      public final DataType<R> getDataType(Configuration configuration)
      Description copied from interface: Typed
      The dialect-specific type of this object.
      Specified by:
      getDataType in interface Typed<R extends Record>
    • $dataType

      public final DataType<R> $dataType()
      Description copied from interface: Typed
      Experimental query object model accessor method, see also QOM. Subject to change in future jOOQ versions, use at your own risk.
      Specified by:
      $dataType in interface Typed<R extends Record>
    • getBinding

      public final Binding<?,R> getBinding()
      Description copied from interface: Typed
      The object's underlying Binding.
      Specified by:
      getBinding in interface Typed<R extends Record>
    • getConverter

      public final Converter<?,R> getConverter()
      Description copied from interface: Typed
      The object's underlying Converter.

      By default, all typed objects reference an identity-converter Converter<T, T>. If an implementation is generated, custom data types may be obtained by a custom Converter placed on the generated object.

      Specified by:
      getConverter in interface Typed<R extends Record>
    • convert

      public final <U> SelectField<U> convert(Binding<R,U> binding)
      Description copied from interface: SelectField
      Apply an ad-hoc data type Binding to this field expression.

      Rather than attaching data type bindings at code generation time, or creating cumbersome expressions using DataType.asConvertedDataType(Binding), this method allows for creating a derived field expression with an ad-hoc data type binding for single query usage.

      Specified by:
      convert in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Parameters:
      binding - The binding to be applied on any operations using this field.
      Returns:
      A derived field expression using a new binding.
    • convert

      public final <U> SelectField<U> convert(Converter<R,U> converter)
      Description copied from interface: SelectField
      Apply an ad-hoc data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataType(Converter), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Specified by:
      convert in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Parameters:
      converter - The converter to be applied on any operations using this field.
      Returns:
      A derived field expression using a new converter.
    • convert

      public final <U> SelectField<U> convert(Class<U> toType, Function<? super R,? extends U> from, Function<? super U,? extends R> to)
      Description copied from interface: SelectField
      Apply an ad-hoc data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataType(Class, Function, Function), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Specified by:
      convert in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Returns:
      A derived field expression using a new converter.
    • convertFrom

      public final <U> SelectField<U> convertFrom(Class<U> toType, Function<? super R,? extends U> from)
      Description copied from interface: SelectField
      Apply an ad-hoc read-only data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataTypeFrom(Class, Function), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Specified by:
      convertFrom in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Returns:
      A derived field expression using a new converter.
    • convertFrom

      public final <U> SelectField<U> convertFrom(Function<? super R,? extends U> from)
      Description copied from interface: SelectField
      Apply an ad-hoc read-only data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataTypeFrom(Class, Function), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Unlike SelectField.convertFrom(Class, Function), this method attempts to work without an explicit Class reference for the underlying Converter.toType(). There may be some edge cases where this doesn't work, e.g. when nesting rows in arrays, the class literal is required for reflective array creation.

      Specified by:
      convertFrom in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Returns:
      A derived field expression using a new converter.
    • convertTo

      public final <U> SelectField<U> convertTo(Class<U> toType, Function<? super U,? extends R> to)
      Description copied from interface: SelectField
      Apply an ad-hoc write-only data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataTypeTo(Class, Function), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Specified by:
      convertTo in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Returns:
      A derived field expression using a new converter.
    • convertTo

      public final <U> SelectField<U> convertTo(Function<? super U,? extends R> to)
      Description copied from interface: SelectField
      Apply an ad-hoc write-only data type Converter to this field expression.

      Rather than attaching data type converters at code generation time, or creating cumbersome expressions using DataType.asConvertedDataTypeTo(Class, Function), this method allows for creating a derived field expression with an ad-hoc data type converter for single query usage.

      Unlike SelectField.convertTo(Class, Function), this method attempts to work without an explicit Class reference for the underlying Converter.toType(). There may be some edge cases where this doesn't work, e.g. when nesting rows in arrays, the class literal is required for reflective array creation.

      Specified by:
      convertTo in interface SelectField<R extends Record>
      Type Parameters:
      U - The user type.
      Returns:
      A derived field expression using a new converter.
    • as

      public final SelectField<R> as(Field<?> otherField)
      Description copied from interface: SelectField
      Create an alias for this field based on another field's name.
      Specified by:
      as in interface SelectField<R extends Record>
      Parameters:
      otherField - The other field whose name this field is aliased with.
      Returns:
      The field alias.
    • from

      public final R from(Record record)
      Description copied from interface: Table
      The inverse operation of Record.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);
       
      Specified by:
      from in interface Table<R extends Record>
    • asterisk

      public final QualifiedAsterisk asterisk()
      Description copied from interface: Table
      Create a qualified asterisk expression from this table (table.*) for use with SELECT.

      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.

      Specified by:
      asterisk in interface Table<R extends Record>
      See Also:
    • getDataType

      public final DataType<R> getDataType()
      Description copied from interface: RecordQualifier
      The UDT's or Table's data type as known to the database.
      Specified by:
      getDataType in interface RecordQualifier<R extends Record>
      Specified by:
      getDataType in interface Typed<R extends Record>
    • recordType

      public final RecordType<R> recordType()
      Description copied from interface: Table
      The record type produced by this table.
      Specified by:
      recordType in interface Table<R extends Record>
    • newRecord

      public final R newRecord()
      Description copied from interface: RecordQualifier
      Create a new Record of this UDT's or Table's type.
      Specified by:
      newRecord in interface RecordQualifier<R extends Record>
      See Also:
    • fields

      public final Field<?>[] fields()
      Description copied from interface: Fields
      Get all fields known to this type.
      Specified by:
      fields in interface Fields
    • asMultiset

      public final Field<Result<R>> asMultiset()
      Description copied from interface: TableLike
      Turn this TableLike expression into a DSL.multiset(TableLike).
      Specified by:
      asMultiset in interface TableLike<R extends Record>
    • asMultiset

      public final Field<Result<R>> asMultiset(String alias)
      Description copied from interface: TableLike
      Turn this TableLike expression into a DSL.multiset(TableLike).
      Specified by:
      asMultiset in interface TableLike<R extends Record>
    • asMultiset

      public final Field<Result<R>> asMultiset(Name alias)
      Description copied from interface: TableLike
      Turn this TableLike expression into a DSL.multiset(TableLike).
      Specified by:
      asMultiset in interface TableLike<R extends Record>
    • asMultiset

      public final Field<Result<R>> asMultiset(Field<?> alias)
      Description copied from interface: TableLike
      Turn this TableLike expression into a DSL.multiset(TableLike).
      Specified by:
      asMultiset in interface TableLike<R extends Record>
    • asTable

      public final Table<R> asTable()
      Description copied from interface: TableLike
      The underlying table representation of this object.

      This method is useful for things like SELECT * FROM (SELECT * FROM x WHERE x.a = '1') WHERE …

      Specified by:
      asTable in interface TableLike<R extends Record>
    • asTable

      public final Table<R> asTable(String alias)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(String alias, String... fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(String alias, Collection<? extends String> fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Name alias)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Name alias, Name... fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Name alias, Collection<? extends Name> fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Table<?> alias)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Table<?> alias, Field<?>... fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(Table<?> alias, Collection<? extends Field<?>> fieldAliases)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(String alias, Function<? super Field<?>,? extends String> aliasFunction)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • asTable

      public final Table<R> asTable(String alias, BiFunction<? super Field<?>,? super Integer,? extends String> aliasFunction)
      Description copied from interface: TableLike
      The underlying aliased table representation of this object.
      Specified by:
      asTable in interface TableLike<R extends Record>
      See Also:
    • as

      public Table<R> as(String alias)
      Description copied from interface: Table
      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 the SelectField.as(String) override. In order to alias only the projected table expression, use DSL.field(SelectField) to wrap this table into a Field first.

      Specified by:
      as in interface SelectField<R extends Record>
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      Returns:
      The table alias
    • as

      public final Table<R> as(String alias, String... fieldAliases)
      Description copied from interface: Table
      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
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      fieldAliases - The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.
      Returns:
      The table alias
    • as

      public final Table<R> as(String alias, Collection<? extends String> fieldAliases)
      Description copied from interface: Table
      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
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      fieldAliases - The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.
      Returns:
      The table alias
    • as

      public final Table<R> as(String alias, Function<? super Field<?>,? extends String> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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());
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • as

      public final Table<R> as(String alias, BiFunction<? super Field<?>,? super Integer,? extends String> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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);
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • as

      public final Table<R> as(Name alias, Collection<? extends Name> fieldAliases)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      Note that the case-sensitivity of the returned table depends on Settings.getRenderQuotedNames() and the Name. By default, table aliases are quoted, and thus case-sensitive in many SQL dialects - use DSL.unquotedName(String...) for case-insensitive aliases.

      If the argument Name.getName() is qualified, then the Name.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
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      fieldAliases - The field aliases. Excess aliases are ignored, missing aliases will be substituted by this table's field names.
      Returns:
      The table alias
    • as

      public final Table<R> as(Name alias, Function<? super Field<?>,? extends Name> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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());
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • as

      public final Table<R> as(Name alias, BiFunction<? super Field<?>,? super Integer,? extends Name> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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);
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      alias - The alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • getTableType

      public final TableOptions.TableType getTableType()
      Description copied from interface: Table
      Get the table type.
      Specified by:
      getTableType in interface Table<R extends Record>
    • getOptions

      public final TableOptions getOptions()
      Description copied from interface: Table
      Get the table options.
      Specified by:
      getOptions in interface Table<R extends Record>
    • getCatalog

      public final Catalog getCatalog()
      Description copied from interface: Qualified
      Get the object's catalog.
      Specified by:
      getCatalog in interface Qualified
    • getPackage

      public final Package getPackage()
      Description copied from interface: RecordQualifier
      Get the UDT package if this is a UDT, or null if it is not a UDT, or if it is a schema level UDT defined outside of a package.
      Specified by:
      getPackage in interface RecordQualifier<R extends Record>
    • getSchema

      public Schema getSchema()
      Description copied from interface: Qualified
      Get the object's schema.
      Specified by:
      getSchema in interface Qualified
    • getIdentity

      public Identity<R,?> getIdentity()
      Retrieve the table's IDENTITY 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 when INSERT statements are performed.

      An IDENTITY column is usually part of the PRIMARY KEY or of a UNIQUE KEY in the table, although in some RDBMS, this is not required. There can only be at most one IDENTITY column.

      Note: Unfortunately, this is not supported in the Oracle dialect, where identities emulated by triggers cannot be formally detected.

      Subclasses should override this method

      Specified by:
      getIdentity in interface Table<R extends Record>
      Returns:
      The table's IDENTITY information, or null, if no such information is available.
    • getPrimaryKey

      public UniqueKey<R> getPrimaryKey()
      Retrieve the table's primary key

      Subclasses may override this method

      Specified by:
      getPrimaryKey in interface Table<R extends Record>
      Returns:
      The primary key. This is never null for an updatable table.
    • getRecordVersion

      public TableField<R,?> getRecordVersion()
      A "version" field holding record version information used for optimistic locking

      jOOQ supports optimistic locking in UpdatableRecord.store() and UpdatableRecord.delete() if Settings.isExecuteWithOptimisticLocking() is enabled. Optimistic locking is performed in a single UPDATE or DELETE statement if tables provide a "version" or "timestamp" field, or in two steps using an additional SELECT … 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.

      Subclasses may override this method

      Specified by:
      getRecordVersion in interface Table<R extends Record>
      Returns:
      The "version" field, or null, if this table has no "version" field.
      See Also:
    • getRecordTimestamp

      public TableField<R,?> getRecordTimestamp()
      A "timestamp" field holding record timestamp information used for optimistic locking

      jOOQ supports optimistic locking in UpdatableRecord.store() and UpdatableRecord.delete() if Settings.isExecuteWithOptimisticLocking() is enabled. Optimistic locking is performed in a single UPDATE or DELETE statement if tables provide a "version" or "timestamp" field, or in two steps using an additional SELECT … 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.

      Subclasses may override this method

      Specified by:
      getRecordTimestamp in interface Table<R extends Record>
      Returns:
      The "timestamp" field, or null, if this table has no "timestamp" field.
      See Also:
    • getIndexes

      public List<Index> getIndexes()
      Retrieve all of the table's indexes.

      Subclasses should override this method

      Specified by:
      getIndexes in interface Table<R extends Record>
      Returns:
      All indexes. This is never null.
    • getKeys

      public List<UniqueKey<R>> getKeys()
      Retrieve all of the table's primary and unique keys.

      Subclasses should no longer override this method, which may be made final in the future.

      Specified by:
      getKeys in interface Table<R extends Record>
      Returns:
      All keys. This is never null. This is never empty for a Table with a Table.getPrimaryKey().
    • getUniqueKeys

      public List<UniqueKey<R>> getUniqueKeys()
      Retrieve all of the table's unique keys.

      Subclasses should override this method

      Specified by:
      getUniqueKeys in interface Table<R extends Record>
      Returns:
      All keys. This is never null.
    • getReferencesFrom

      public final <O extends Record> List<ForeignKey<O,R>> getReferencesFrom(Table<O> other)
      Description copied from interface: Table
      Get a list of FOREIGN KEY's of a specific table, referencing a this table.

      This will recurse into joined tables.

      Specified by:
      getReferencesFrom in interface Table<R extends Record>
      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 never null.
    • getReferences

      public List<ForeignKey<R,?>> getReferences()
      Get the list of FOREIGN KEY's of this table

      Subclasses should override this method

      Specified by:
      getReferences in interface Table<R extends Record>
      Returns:
      This table's FOREIGN KEY's. This is never null.
    • getReferencesTo

      public final <O extends Record> List<ForeignKey<R,O>> getReferencesTo(Table<O> other)
      Description copied from interface: Table
      Get a list of FOREIGN KEY's of this table, referencing a specific table.

      This will recurse into joined tables.

      Specified by:
      getReferencesTo in interface Table<R extends Record>
      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 never null.
    • getChecks

      public List<Check<R>> getChecks()
      Get a list of CHECK constraints of this table.

      Subclasses should override this method

      Specified by:
      getChecks in interface Table<R extends Record>
    • createField

      @Deprecated protected static final <R extends Record, T> TableField<R,T> createField(String name, DataType<T> type, Table<R> table)
      Deprecated.
      - 3.12.0 - [#8000] - Use AbstractTable.createField(Name, DataType, Table) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected static final <R extends Record, T> TableField<R,T> createField(String name, DataType<T> type, Table<R> table, String comment)
      Deprecated.
      - 3.12.0 - [#8000] - Use AbstractTable.createField(Name, DataType, Table, String) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected static final <R extends Record, T, U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Converter<T,U> converter)
      Deprecated.
      - 3.12.0 - [#8000] - Use AbstractTable.createField(Name, DataType, Table, String, Converter) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected static final <R extends Record, T, U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Binding<T,U> binding)
      Deprecated.
      - 3.12.0 - [#8000] - Use AbstractTable.createField(Name, DataType, Table, String, Binding) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected static final <R extends Record, T, X, U> TableField<R,U> createField(String name, DataType<T> type, Table<R> table, String comment, Converter<X,U> converter, Binding<T,X> binding)
      Deprecated.
      - 3.12.0 - [#8000] - Use AbstractTable.createField(Name, DataType, Table, String, Converter, Binding) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected final <T> TableField<R,T> createField(String name, DataType<T> type)
      Deprecated.
      - 3.12.0 - [#8000] - Use createField(Name, DataType) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected final <T> TableField<R,T> createField(String name, DataType<T> type, String comment)
      Deprecated.
      - 3.12.0 - [#8000] - Use createField(Name, DataType, String) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected final <T, U> TableField<R,U> createField(String name, DataType<T> type, String comment, Converter<T,U> converter)
      Deprecated.
      - 3.12.0 - [#8000] - Use createField(Name, DataType, String, Converter) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected final <T, U> TableField<R,U> createField(String name, DataType<T> type, String comment, Binding<T,U> binding)
      Deprecated.
      - 3.12.0 - [#8000] - Use createField(Name, DataType, String, Binding) instead.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      @Deprecated protected final <T, X, U> TableField<R,U> createField(String name, DataType<T> type, String comment, Converter<X,U> converter, Binding<T,X> binding)
      Deprecated.
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, T> TableField<R,T> createField(Name name, DataType<T> type, Table<R> table)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, T> TableField<R,T> createField(Name name, DataType<T> type, Table<R> table, String comment)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, T, U> TableField<R,U> createField(Name name, DataType<T> type, Table<R> table, String comment, Converter<T,U> converter)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, T, U> TableField<R,U> createField(Name name, DataType<T> type, Table<R> table, String comment, Binding<T,U> binding)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, T, X, U> TableField<R,U> createField(Name name, DataType<T> type, Table<R> table, String comment, Converter<X,U> converter, Binding<T,X> binding)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, TR extends Table<R>, T> TableField<R,T> createField(Name name, DataType<T> type, TR table, String comment, Generator<R,TR,T> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, TR extends Table<R>, T, U> TableField<R,U> createField(Name name, DataType<T> type, TR table, String comment, Converter<T,U> converter, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, TR extends Table<R>, T, U> TableField<R,U> createField(Name name, DataType<T> type, TR table, String comment, Binding<T,U> binding, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected static final <R extends Record, TR extends Table<R>, T, X, U> TableField<R,U> createField(Name name, DataType<T> type, TR table, String comment, Converter<X,U> converter, Binding<T,X> binding, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected final <T> TableField<R,T> createField(Name name, DataType<T> type)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected final <T> TableField<R,T> createField(Name name, DataType<T> type, String comment)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected final <T, U> TableField<R,U> createField(Name name, DataType<T> type, String comment, Converter<T,U> converter)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected final <T, U> TableField<R,U> createField(Name name, DataType<T> type, String comment, Binding<T,U> binding)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField

      protected final <T, X, U> TableField<R,U> createField(Name name, DataType<T> type, String comment, Converter<X,U> converter, Binding<T,X> binding)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField0

      protected final <TR extends Table<R>, T> TableField<R,T> createField0(Name name, DataType<T> type, TR table, String comment, Generator<R,TR,T> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField0

      protected final <TR extends Table<R>, T, U> TableField<R,U> createField0(Name name, DataType<T> type, TR table, String comment, Converter<T,U> converter, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField0

      protected final <TR extends Table<R>, T, U> TableField<R,U> createField0(Name name, DataType<T> type, TR table, String comment, Binding<T,U> binding, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • createField0

      protected final <TR extends Table<R>, T, X, U> TableField<R,U> createField0(Name name, DataType<T> type, TR table, String comment, Converter<X,U> converter, Binding<T,X> binding, Generator<R,TR,U> generator)
      Subclasses may call this method to create TableField objects that are linked to this table.
      Parameters:
      name - The name of the field (case-sensitive!)
      type - The data type of the field
    • eq

      public final Condition eq(Table<R> arg2)
      Description copied from interface: Table
      The EQ operator.
      Specified by:
      eq in interface Table<R extends Record>
    • equal

      public final Condition equal(Table<R> arg2)
      Description copied from interface: Table
      The EQUAL operator, an alias for the EQ operator.
      Specified by:
      equal in interface Table<R extends Record>
    • ne

      public final Condition ne(Table<R> arg2)
      Description copied from interface: Table
      The NE operator.
      Specified by:
      ne in interface Table<R extends Record>
    • notEqual

      public final Condition notEqual(Table<R> arg2)
      Description copied from interface: Table
      The NOT_EQUAL operator, an alias for the NE operator.
      Specified by:
      notEqual in interface Table<R extends Record>
    • rowid

      public Field<RowId> rowid()
      Description copied from interface: Table
      The ROWID 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.

      Specified by:
      rowid in interface Table<R extends Record>
    • useIndex

      public final Table<R> useIndex(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndex("MY_INDEX")
             .fetch();
       
      Specified by:
      useIndex in interface Table<R extends Record>
      See Also:
    • useIndexForJoin

      public final Table<R> useIndexForJoin(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForJoin("MY_INDEX")
             .fetch();
       
      Specified by:
      useIndexForJoin in interface Table<R extends Record>
      See Also:
    • useIndexForOrderBy

      public final Table<R> useIndexForOrderBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
             .fetch();
       
      Specified by:
      useIndexForOrderBy in interface Table<R extends Record>
      See Also:
    • useIndexForGroupBy

      public final Table<R> useIndexForGroupBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
             .fetch();
       
      Specified by:
      useIndexForGroupBy in interface Table<R extends Record>
      See Also:
    • ignoreIndex

      public final Table<R> ignoreIndex(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndex("MY_INDEX")
             .fetch();
       
      Specified by:
      ignoreIndex in interface Table<R extends Record>
      See Also:
    • ignoreIndexForJoin

      public final Table<R> ignoreIndexForJoin(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForJoin("MY_INDEX")
             .fetch();
       
      Specified by:
      ignoreIndexForJoin in interface Table<R extends Record>
      See Also:
    • ignoreIndexForOrderBy

      public final Table<R> ignoreIndexForOrderBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
             .fetch();
       
      Specified by:
      ignoreIndexForOrderBy in interface Table<R extends Record>
      See Also:
    • ignoreIndexForGroupBy

      public final Table<R> ignoreIndexForGroupBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
             .fetch();
       
      Specified by:
      ignoreIndexForGroupBy in interface Table<R extends Record>
      See Also:
    • forceIndex

      public final Table<R> forceIndex(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndex("MY_INDEX")
             .fetch();
       
      Specified by:
      forceIndex in interface Table<R extends Record>
      See Also:
    • forceIndexForJoin

      public final Table<R> forceIndexForJoin(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForJoin("MY_INDEX")
             .fetch();
       
      Specified by:
      forceIndexForJoin in interface Table<R extends Record>
      See Also:
    • forceIndexForOrderBy

      public final Table<R> forceIndexForOrderBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForOrderBy("MY_INDEX")
             .fetch();
       
      Specified by:
      forceIndexForOrderBy in interface Table<R extends Record>
      See Also:
    • forceIndexForGroupBy

      public final Table<R> forceIndexForGroupBy(String... indexes)
      Description copied from interface: Table
      Specify a MySQL style table hint for query optimisation.

      Example:

      
       create.select()
             .from(BOOK.as("b").useIndexForGroupBy("MY_INDEX")
             .fetch();
       
      Specified by:
      forceIndexForGroupBy in interface Table<R extends Record>
      See Also:
    • as

      public Table<R> as(Table<?> otherTable)
      Description copied from interface: Table
      Create an alias for this table based on another table's name.
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      otherTable - The other table whose name this table is aliased with.
      Returns:
      The table alias.
    • as

      public final Table<R> as(Table<?> otherTable, Field<?>... otherFields)
      Description copied from interface: Table
      Create an alias for this table based on another table's name.
      Specified by:
      as in interface Table<R extends Record>
      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

      public final Table<R> as(Table<?> otherTable, Collection<? extends Field<?>> otherFields)
      Description copied from interface: Table
      Create an alias for this table based on another table's name.
      Specified by:
      as in interface Table<R extends Record>
      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

      public final Table<R> as(Table<?> otherTable, Function<? super Field<?>,? extends Field<?>> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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));
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      otherTable - The other table whose name is used as alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • as

      public final Table<R> as(Table<?> otherTable, BiFunction<? super Field<?>,? super Integer,? extends Field<?>> aliasFunction)
      Description copied from interface: Table
      Create an alias for this table and its fields.

      This works like Table.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);
       
      Specified by:
      as in interface Table<R extends Record>
      Parameters:
      otherTable - The other table whose name is used as alias name
      aliasFunction - The function providing field aliases.
      Returns:
      The table alias
    • with

      @Pro public final Table<R> with(String hint)
      Description copied from interface: Table
      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, see SelectFromStep.hint(String) and SelectQuery.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!

      Specified by:
      with in interface Table<R extends Record>
      See Also:
    • with

      public final Table<R> with(String hint, Object... binds)
      Description copied from interface: Table
      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, see SelectFromStep.hint(String) and SelectQuery.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!

      Specified by:
      with in interface Table<R extends Record>
      See Also:
    • with

      public final Table<R> with(String hint, QueryPart... parts)
      Description copied from interface: Table
      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, see SelectFromStep.hint(String) and SelectQuery.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!

      Specified by:
      with in interface Table<R extends Record>
      See Also:
    • with

      public final Table<R> with(SQL hint)
      Description copied from interface: Table
      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, see SelectFromStep.hint(String) and SelectQuery.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!

      Specified by:
      with in interface Table<R extends Record>
      See Also:
    • at

      @Pro public final Table<R> at(String link)
      Description copied from interface: Table
      A table reference of this table at a given Link.
      Specified by:
      at in interface Table<R extends Record>
      See Also:
    • at

      @Pro public final Table<R> at(Name link)
      Description copied from interface: Table
      A table reference of this table at a given Link.
      Specified by:
      at in interface Table<R extends Record>
      See Also:
    • at

      @Pro public final Table<R> at(Link link)
      Description copied from interface: Table
      A table reference of this table at a given Link.
      Specified by:
      at in interface Table<R extends Record>
    • pivot

      @Pro public final PivotForStep pivot(Field<?> aggregateFunction)
      Description copied from interface: Table
      Create a new TABLE reference from this table, pivoting it into another form.
      Specified by:
      pivot in interface Table<R extends Record>
      Parameters:
      aggregateFunction - The aggregate function used for pivoting.
      Returns:
      A DSL object to create the PIVOT expression
    • pivot

      @Pro public final PivotForStep pivot(Field<?>... aggregateFunctions)
      Description copied from interface: Table
      Create a new TABLE reference from this table, pivoting it into another form.
      Specified by:
      pivot in interface Table<R extends Record>
      Parameters:
      aggregateFunctions - The aggregate functions used for pivoting.
      Returns:
      A DSL object to create the PIVOT expression
    • pivot

      @Pro public final PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions)
      Description copied from interface: Table
      Create a new TABLE reference from this table, pivoting it into another form.
      Specified by:
      pivot in interface Table<R extends Record>
      Parameters:
      aggregateFunctions - The aggregate functions used for pivoting.
      Returns:
      A DSL object to create the PIVOT expression
      See Also:
    • for_

      @Pro public final Table<R> for_(PeriodSpecification periodSpecification)
      Description copied from interface: Table
      Create a reference to a temporal table with a PeriodSpecification for usage in Select.
      Specified by:
      for_ in interface Table<R extends Record>
    • forPortionOf

      public final Table<R> forPortionOf(PeriodSpecification periodSpecification)
      Description copied from interface: Table
      Create a reference to a temporal table with a PeriodSpecification for usage in Update and Delete.
      Specified by:
      forPortionOf in interface Table<R extends Record>
    • versionsBetweenScn

      @Pro public final VersionsBetweenAndStep<R,Number> versionsBetweenScn(Number scn)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenScn in interface Table<R extends Record>
    • versionsBetweenScn

      @Pro public final VersionsBetweenAndStep<R,Number> versionsBetweenScn(Field<? extends Number> scn)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenScn in interface Table<R extends Record>
    • versionsBetweenScnMinvalue

      @Pro public final VersionsBetweenAndStep<R,Number> versionsBetweenScnMinvalue()
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenScnMinvalue in interface Table<R extends Record>
    • versionsBetweenTimestamp

      @Pro public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Timestamp timestamp)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenTimestamp in interface Table<R extends Record>
    • versionsBetweenTimestamp

      @Pro public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestamp(Field<Timestamp> timestamp)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenTimestamp in interface Table<R extends Record>
    • versionsBetweenTimestampMinvalue

      @Pro public final VersionsBetweenAndStep<R,Timestamp> versionsBetweenTimestampMinvalue()
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback versions query clause from this table.
      Specified by:
      versionsBetweenTimestampMinvalue in interface Table<R extends Record>
    • asOfScn

      @Pro public final Table<R> asOfScn(Number scn)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback query clause from this table.
      Specified by:
      asOfScn in interface Table<R extends Record>
    • asOfScn

      @Pro public final Table<R> asOfScn(Field<? extends Number> scn)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback query clause from this table.
      Specified by:
      asOfScn in interface Table<R extends Record>
    • asOfTimestamp

      @Pro public final Table<R> asOfTimestamp(Timestamp timestamp)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback query clause from this table.
      Specified by:
      asOfTimestamp in interface Table<R extends Record>
    • asOfTimestamp

      @Pro public final Table<R> asOfTimestamp(Field<Timestamp> timestamp)
      Description copied from interface: Table
      Create an SQLDialect.ORACLE flashback query clause from this table.
      Specified by:
      asOfTimestamp in interface Table<R extends Record>
    • divideBy

      public final DivideByOnStep divideBy(Table<?> divisor)
      Description copied from interface: Table
      Create a new TABLE 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(…) and returning(…) clauses.

      For more information about relational division and some nice, real-life examples, see

      This has been observed to work with all dialects

      Specified by:
      divideBy in interface Table<R extends Record>
    • leftSemiJoin

      public final TableOnStep<R> leftSemiJoin(TableLike<?> table)
      Description copied from interface: Table
      A synthetic LEFT SEMI JOIN clause that translates to an equivalent EXISTS 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 or SELECT or any other clause than ON.

      Specified by:
      leftSemiJoin in interface Table<R extends Record>
    • leftAntiJoin

      public final TableOnStep<R> leftAntiJoin(TableLike<?> table)
      Description copied from interface: Table
      A synthetic LEFT ANTI JOIN clause that translates to an equivalent NOT 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 or SELECT or any other clause than ON.

      Specified by:
      leftAntiJoin in interface Table<R extends Record>
    • where

      public Table<R> where(Condition condition)
      Description copied from interface: Table
      Add a WHERE clause to the table, connecting them with each other with Operator.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.

      Specified by:
      where in interface Table<R extends Record>
    • where

      public Table<R> where(Condition... conditions)
      Description copied from interface: Table
      Add a WHERE clause to the table, connecting them with each other with Operator.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.

      Specified by:
      where in interface Table<R extends Record>
    • where

      public Table<R> where(Collection<? extends Condition> conditions)
      Description copied from interface: Table
      Add a WHERE clause to the table, connecting them with each other with Operator.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.

      Specified by:
      where in interface Table<R extends Record>
    • where

      public Table<R> where(Field<Boolean> field)
      Description copied from interface: Table
      Add a WHERE 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.

      Specified by:
      where in interface Table<R extends Record>
    • where

      public Table<R> where(SQL sql)
      Description copied from interface: Table
      Add a WHERE 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!

      Specified by:
      where in interface Table<R extends Record>
      See Also:
    • where

      public Table<R> where(String sql)
      Description copied from interface: Table
      Add a WHERE 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!

      Specified by:
      where in interface Table<R extends Record>
      See Also:
    • where

      public Table<R> where(String sql, Object... bindings)
      Description copied from interface: Table
      Add a WHERE 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!

      Specified by:
      where in interface Table<R extends Record>
      See Also:
    • where

      public Table<R> where(String sql, QueryPart... parts)
      Description copied from interface: Table
      Add a WHERE 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!

      Specified by:
      where in interface Table<R extends Record>
      See Also:
    • whereExists

      public Table<R> whereExists(Select<?> select)
      Description copied from interface: Table
      Add a WHERE 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.

      Specified by:
      whereExists in interface Table<R extends Record>
    • whereNotExists

      public Table<R> whereNotExists(Select<?> select)
      Description copied from interface: Table
      Add a WHERE 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.

      Specified by:
      whereNotExists in interface Table<R extends Record>
    • join

      public final TableOptionalOnStep<Record> join(TableLike<?> table, JoinType type)
      Description copied from interface: Table
      Join a table to this table using a JoinType

      Depending on the JoinType, a subsequent TableOnStep.on(Condition) or TableOnStep.using(Field...) clause is required. If it is required but omitted, a DSL.trueCondition(), i.e. 1 = 1 condition will be rendered

      Specified by:
      join in interface Table<R extends Record>
    • join

      public final TableOnStep<Record> join(TableLike<?> table)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.innerJoin(TableLike).

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • join

      public final TableOnStep<Record> join(SQL sql)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • join

      public final TableOnStep<Record> join(String sql)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • join

      public final TableOnStep<Record> join(String sql, Object... bindings)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • join

      public final TableOnStep<Record> join(String sql, QueryPart... parts)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • join

      public final TableOnStep<Record> join(Name name)
      Description copied from interface: Table
      INNER JOIN a table to this table.

      A synonym for Table.innerJoin(Name).

      Specified by:
      join in interface Table<R extends Record>
      See Also:
    • innerJoin

      public final TableOnStep<Record> innerJoin(TableLike<?> table)
      Description copied from interface: Table
      INNER JOIN a table to this table.
      Specified by:
      innerJoin in interface Table<R extends Record>
    • innerJoin

      public final TableOnStep<Record> innerJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      innerJoin in interface Table<R extends Record>
      See Also:
    • innerJoin

      public final TableOnStep<Record> innerJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      innerJoin in interface Table<R extends Record>
      See Also:
    • innerJoin

      public final TableOnStep<Record> innerJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      innerJoin in interface Table<R extends Record>
      See Also:
    • innerJoin

      public final TableOnStep<Record> innerJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      innerJoin in interface Table<R extends Record>
      See Also:
    • innerJoin

      public final TableOnStep<Record> innerJoin(Name name)
      Description copied from interface: Table
      INNER JOIN a table to this table.
      Specified by:
      innerJoin in interface Table<R extends Record>
      See Also:
    • partitionBy

      @Pro public TableOuterJoinStep<Record> partitionBy(Field<?>... fields)
      Description copied from interface: Table
      Add a PARTITION BY clause to the left hand side of the OUTER JOIN keywords
      Specified by:
      partitionBy in interface Table<R extends Record>
    • partitionBy

      @Pro public TableOuterJoinStep<Record> partitionBy(Collection<? extends Field<?>> fields)
      Description copied from interface: Table
      Add a PARTITION BY clause to the left hand side of the OUTER JOIN keywords
      Specified by:
      partitionBy in interface Table<R extends Record>
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(TableLike<?> table)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.leftOuterJoin(TableLike).

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(SQL sql)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(String sql)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(String sql, Object... bindings)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftJoin

      public final TablePartitionByStep<Record> leftJoin(Name name)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.

      A synonym for Table.leftOuterJoin(Name).

      Specified by:
      leftJoin in interface Table<R extends Record>
      See Also:
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(TableLike<?> table)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.
      Specified by:
      leftOuterJoin in interface Table<R extends Record>
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      leftOuterJoin in interface Table<R extends Record>
      See Also:
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      leftOuterJoin in interface Table<R extends Record>
      See Also:
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      leftOuterJoin in interface Table<R extends Record>
      See Also:
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      leftOuterJoin in interface Table<R extends Record>
      See Also:
    • leftOuterJoin

      public final TablePartitionByStep<Record> leftOuterJoin(Name name)
      Description copied from interface: Table
      LEFT OUTER JOIN a table to this table.
      Specified by:
      leftOuterJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(TableLike<?> table)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.rightOuterJoin(TableLike).

      This is only possible where the underlying RDBMS supports it.

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(SQL sql)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(String sql)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(String sql, Object... bindings)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightJoin

      public final TablePartitionByStep<Record> rightJoin(Name name)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      A synonym for Table.rightOuterJoin(Name).

      This is only possible where the underlying RDBMS supports it

      Specified by:
      rightJoin in interface Table<R extends Record>
      See Also:
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(TableLike<?> table)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      This is only possible where the underlying RDBMS supports it

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
      See Also:
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
      See Also:
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
      See Also:
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
      See Also:
    • rightOuterJoin

      public final TablePartitionByStep<Record> rightOuterJoin(Name name)
      Description copied from interface: Table
      RIGHT OUTER JOIN a table to this table.

      This is only possible where the underlying RDBMS supports it

      Specified by:
      rightOuterJoin in interface Table<R extends Record>
      See Also:
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(TableLike<?> table)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      This is only possible where the underlying RDBMS supports it

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
      See Also:
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
      See Also:
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
      See Also:
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
      See Also:
    • fullOuterJoin

      public final TableOnStep<Record> fullOuterJoin(Name name)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      This is only possible where the underlying RDBMS supports it

      Specified by:
      fullOuterJoin in interface Table<R extends Record>
      See Also:
    • fullJoin

      public final TableOnStep<Record> fullJoin(TableLike<?> table)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.fullOuterJoin(TableLike).

      Specified by:
      fullJoin in interface Table<R extends Record>
    • fullJoin

      public final TableOnStep<Record> fullJoin(SQL sql)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      fullJoin in interface Table<R extends Record>
    • fullJoin

      public final TableOnStep<Record> fullJoin(String sql)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      fullJoin in interface Table<R extends Record>
    • fullJoin

      public final TableOnStep<Record> fullJoin(String sql, Object... bindings)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      fullJoin in interface Table<R extends Record>
    • fullJoin

      public final TableOnStep<Record> fullJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.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!

      Specified by:
      fullJoin in interface Table<R extends Record>
    • fullJoin

      public final TableOnStep<Record> fullJoin(Name name)
      Description copied from interface: Table
      FULL OUTER JOIN a table to this table.

      A synonym for Table.fullOuterJoin(Name).

      Specified by:
      fullJoin in interface Table<R extends Record>
    • crossJoin

      public final Table<Record> crossJoin(TableLike<?> table)
      Description copied from interface: 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
       
      Specified by:
      crossJoin in interface Table<R extends Record>
    • crossJoin

      public final Table<Record> crossJoin(SQL sql)
      Description copied from interface: 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
       

      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!

      Specified by:
      crossJoin in interface Table<R extends Record>
      See Also:
    • crossJoin

      public final Table<Record> crossJoin(String sql)
      Description copied from interface: 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
       

      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!

      Specified by:
      crossJoin in interface Table<R extends Record>
      See Also:
    • crossJoin

      public final Table<Record> crossJoin(String sql, Object... bindings)
      Description copied from interface: 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
       

      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!

      Specified by:
      crossJoin in interface Table<R extends Record>
      See Also:
    • crossJoin

      public final Table<Record> crossJoin(String sql, QueryPart... parts)
      Description copied from interface: 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
       

      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!

      Specified by:
      crossJoin in interface Table<R extends Record>
      See Also:
    • crossJoin

      public final Table<Record> crossJoin(Name name)
      Description copied from interface: 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
       
      Specified by:
      crossJoin in interface Table<R extends Record>
      See Also:
    • naturalJoin

      public final Table<Record> naturalJoin(TableLike<?> table)
      Description copied from interface: Table
      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.

      Specified by:
      naturalJoin in interface Table<R extends Record>
    • naturalJoin

      public final Table<Record> naturalJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      naturalJoin in interface Table<R extends Record>
      See Also:
    • naturalJoin

      public final Table<Record> naturalJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      naturalJoin in interface Table<R extends Record>
      See Also:
    • naturalJoin

      public final Table<Record> naturalJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      naturalJoin in interface Table<R extends Record>
      See Also:
    • naturalJoin

      public final Table<Record> naturalJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      naturalJoin in interface Table<R extends Record>
      See Also:
    • naturalJoin

      public final Table<Record> naturalJoin(Name name)
      Description copied from interface: Table
      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.

      Specified by:
      naturalJoin in interface Table<R extends Record>
      See Also:
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(TableLike<?> table)
      Description copied from interface: Table
      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.

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalLeftOuterJoin

      public final Table<Record> naturalLeftOuterJoin(Name name)
      Description copied from interface: Table
      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.

      Specified by:
      naturalLeftOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(TableLike<?> table)
      Description copied from interface: 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.

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(SQL sql)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(String sql)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(String sql, Object... bindings)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalRightOuterJoin

      public final Table<Record> naturalRightOuterJoin(Name name)
      Description copied from interface: 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.

      Specified by:
      naturalRightOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(TableLike<?> table)
      Description copied from interface: 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.

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(SQL sql)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(String sql)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(String sql, Object... bindings)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(String sql, QueryPart... parts)
      Description copied from interface: 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.

      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!

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
      See Also:
    • naturalFullOuterJoin

      public final Table<Record> naturalFullOuterJoin(Name name)
      Description copied from interface: 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.

      Specified by:
      naturalFullOuterJoin in interface Table<R extends Record>
      See Also:
    • crossApply

      public final Table<Record> crossApply(TableLike<?> table)
      Description copied from interface: Table
      CROSS APPLY a table to this table.
      Specified by:
      crossApply in interface Table<R extends Record>
    • crossApply

      public final Table<Record> crossApply(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      crossApply in interface Table<R extends Record>
      See Also:
    • crossApply

      public final Table<Record> crossApply(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      crossApply in interface Table<R extends Record>
      See Also:
    • crossApply

      public final Table<Record> crossApply(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      crossApply in interface Table<R extends Record>
      See Also:
    • crossApply

      public final Table<Record> crossApply(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      crossApply in interface Table<R extends Record>
      See Also:
    • crossApply

      public final Table<Record> crossApply(Name name)
      Description copied from interface: Table
      CROSS APPLY a table to this table.
      Specified by:
      crossApply in interface Table<R extends Record>
      See Also:
    • outerApply

      public final Table<Record> outerApply(TableLike<?> table)
      Description copied from interface: Table
      OUTER APPLY a table to this table.
      Specified by:
      outerApply in interface Table<R extends Record>
    • outerApply

      public final Table<Record> outerApply(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      outerApply in interface Table<R extends Record>
      See Also:
    • outerApply

      public final Table<Record> outerApply(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      outerApply in interface Table<R extends Record>
      See Also:
    • outerApply

      public final Table<Record> outerApply(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      outerApply in interface Table<R extends Record>
      See Also:
    • outerApply

      public final Table<Record> outerApply(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      outerApply in interface Table<R extends Record>
      See Also:
    • outerApply

      public final Table<Record> outerApply(Name name)
      Description copied from interface: Table
      OUTER APPLY a table to this table.
      Specified by:
      outerApply in interface Table<R extends Record>
      See Also:
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(TableLike<?> table)
      Description copied from interface: Table
      STRAIGHT_JOIN a table to this table.
      Specified by:
      straightJoin in interface Table<R extends Record>
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(SQL sql)
      Description copied from interface: Table
      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!

      Specified by:
      straightJoin in interface Table<R extends Record>
      See Also:
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(String sql)
      Description copied from interface: Table
      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!

      Specified by:
      straightJoin in interface Table<R extends Record>
      See Also:
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(String sql, Object... bindings)
      Description copied from interface: Table
      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!

      Specified by:
      straightJoin in interface Table<R extends Record>
      See Also:
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(String sql, QueryPart... parts)
      Description copied from interface: Table
      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!

      Specified by:
      straightJoin in interface Table<R extends Record>
      See Also:
    • straightJoin

      public final TableOptionalOnStep<Record> straightJoin(Name name)
      Description copied from interface: Table
      STRAIGHT_JOIN a table to this table.
      Specified by:
      straightJoin in interface Table<R extends Record>
      See Also:
    • $schema

      public final Schema $schema()
      Description copied from interface: Qualified
      Experimental query object model accessor method, see also QOM. Subject to change in future jOOQ versions, use at your own risk.
      Specified by:
      $schema in interface Qualified
    • fieldStream

      default Stream<Field<?>> fieldStream()
      Description copied from interface: Fields
      Get all fields known to this type as a Stream.
      Specified by:
      fieldStream in interface Fields
    • field

      default <T> Field<T> field(Field<T> field)
      Description copied from interface: Fields
      Get a field known to this type by field reference.

      This will return:

      • A field that is the same as the argument field (by identity comparison).
      • A field that is equal to the argument field (exact matching fully qualified name).
      • A field that is equal to the argument field (partially matching qualified name).
      • A field whose name is equal to the unqualified name of the argument field.
      • null otherwise.

      If several fields have the same ambiguous name, the first one is returned and a warning is logged.

      Specified by:
      field in interface Fields
    • field

      default Field<?> field(int index)
      Description copied from interface: Fields
      Get a field known to this type by index, or null if no field is available at the index.
      Specified by:
      field in interface Fields
      Parameters:
      index - The 0-based index of the field
    • field

      default <T> Field<T> field(int index, Class<T> type)
      Description copied from interface: Fields
      Get a field known to this type by index coerced to type, or null if no field is available at the index.
      Specified by:
      field in interface Fields
      Parameters:
      index - The 0-based index of the field
      type - The type to coerce the resulting field to
    • field

      default <T> Field<T> field(int index, DataType<T> dataType)
      Description copied from interface: Fields
      Get a field known to this type by index coerced to dataType, or null if no field is available at the index.
      Specified by:
      field in interface Fields
      Parameters:
      index - The 0-based index of the field
      dataType - The data type to coerce the resulting field to
    • fields

      default Field<?>[] fields(Field<?>... fields)
      Description copied from interface: Fields
      Get all fields, filtering by some fields.
      Specified by:
      fields in interface Fields
      Parameters:
      fields - The fields to include after looking them up via Fields.field(Field).
      See Also:
    • fields

      default Field<?>[] fields(String... names)
      Description copied from interface: Fields
      Get all fields known to this type, filtering by some unqualified field names.
      Specified by:
      fields in interface Fields
      Parameters:
      names - The unqualified field names to include after looking them up via Fields.field(String).
      See Also:
    • fields

      default Field<?>[] fields(Name... names)
      Description copied from interface: Fields
      Get all fields known to this type, filtering by some qualified field names.
      Specified by:
      fields in interface Fields
      Parameters:
      names - The qualified field names to include after looking them up via Fields.field(Name).
      See Also:
    • fields

      default Field<?>[] fields(int... indexes)
      Description copied from interface: Fields
      Get all fields known to this type, filtering by some field indexes.
      Specified by:
      fields in interface Fields
      See Also:
    • indexOf

      default int indexOf(Field<?> field)
      Description copied from interface: Fields
      Get a field's index from this type.

      The lookup algorithm is the same as that of Fields.field(Field).

      Specified by:
      indexOf in interface Fields
      Parameters:
      field - The field to look for
      Returns:
      The field's 0-based index or -1 if the field is not known to this type.
    • indexOf

      default int indexOf(String name)
      Description copied from interface: Fields
      Get a field's index from this type.

      The lookup algorithm is the same as that of Fields.field(String).

      Specified by:
      indexOf in interface Fields
      Parameters:
      name - The unqualified field name to look for
      Returns:
      The field's 0-based index or -1 if the field is not known to this type.
    • indexOf

      default int indexOf(Name name)
      Description copied from interface: Fields
      Get a field's index from this type.

      The lookup algorithm is the same as that of Fields.field(Name).

      Specified by:
      indexOf in interface Fields
      Parameters:
      name - The qualified field name to look for
      Returns:
      The field's 0-based index or -1 if the field is not known to this type.
    • types

      default Class<?>[] types()
      Description copied from interface: Fields
      Get an array of field types for fields known to this type.

      Entries in the resulting array correspond to Typed.getType() for the corresponding Field in Fields.fields()

      Specified by:
      types in interface Fields
    • type

      default Class<?> type(int index)
      Description copied from interface: Fields
      Get the field type for a given field index, or null if no field is available at the index.
      Specified by:
      type in interface Fields
      Parameters:
      index - The field's 0-based index
    • type

      default Class<?> type(String name)
      Description copied from interface: Fields
      Get the field type for a given unqualified field name, or null if no field is known to this type by this name.

      The lookup algorithm is the same as that of Fields.field(String).

      Specified by:
      type in interface Fields
      Parameters:
      name - The unqualified field name
    • type

      default Class<?> type(Name name)
      Description copied from interface: Fields
      Get the field type for a given qualified field name, or null if no field is known to this type by this name.

      The lookup algorithm is the same as that of Fields.field(Name).

      Specified by:
      type in interface Fields
      Parameters:
      name - The qualified field name
    • dataTypes

      default DataType<?>[] dataTypes()
      Description copied from interface: Fields
      Get an array of field data types for this type.

      Entries in the resulting array correspond to Typed.getDataType() for the corresponding Field in Fields.fields()

      Specified by:
      dataTypes in interface Fields
    • dataType

      default DataType<?> dataType(int index)
      Description copied from interface: Fields
      Get the field data type for a given field index, or null if no field is available at the index.
      Specified by:
      dataType in interface Fields
      Parameters:
      index - The field's 0-based index
    • dataType

      default DataType<?> dataType(String name)
      Description copied from interface: Fields
      Get the field data type for a given qualified field name, or null if no field is known to this type by this name.

      The lookup algorithm is the same as that of Fields.field(String).

      Specified by:
      dataType in interface Fields
      Parameters:
      name - The qualified field name
    • dataType

      default DataType<?> dataType(Name name)
      Description copied from interface: Fields
      Get the field data type for a given qualified field name, or null if no field is known to this type by this name.

      The lookup algorithm is the same as that of Fields.field(Name).

      Specified by:
      dataType in interface Fields
      Parameters:
      name - The qualified field name
    • getName

      public final String getName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getName in interface Named
    • getQualifiedName

      public Name getQualifiedName()
      Description copied from interface: Named
      The qualified name of this object.
      Specified by:
      getQualifiedName in interface Named
    • getUnqualifiedName

      public final Name getUnqualifiedName()
      Description copied from interface: Named
      The unqualified name of this object.
      Specified by:
      getUnqualifiedName in interface Named
    • getComment

      public final String getComment()
      Description copied from interface: Named
      The comment on this object.

      This is the same as calling Named.getCommentPart() and then Comment.getComment().

      Specified by:
      getComment in interface Named
    • getCommentPart

      public final Comment getCommentPart()
      Description copied from interface: Named
      The comment on this object as a QueryPart.
      Specified by:
      getCommentPart in interface Named
    • hashCode

      public int hashCode()
      Description copied from interface: QueryPart
      Generate a hash code from this QueryPart.

      In general, QueryPart hash codes are the same as the hash codes generated from QueryPart.toString(). This guarantees consistent behaviour with QueryPart.equals(Object)

      Some QueryPart implementations may choose to override this behaviour for improved performance, as QueryPart.toString() is an expensive operation, if called many times.

      Specified by:
      hashCode in interface QueryPart
      Returns:
      The QueryPart hash code
    • $name

      public final Name $name()
      Description copied from interface: Named
      Experimental query object model accessor method, see also QOM. Subject to change in future jOOQ versions, use at your own risk.
      Specified by:
      $name in interface Named
    • rendersContent

      public boolean rendersContent(Context<?> ctx)
      Subclasses may override this
      Specified by:
      rendersContent in interface QueryPartInternal
    • declaresFields

      public boolean declaresFields()
      Subclasses may override this
      Specified by:
      declaresFields in interface QueryPartInternal
    • declaresWindows

      public boolean declaresWindows()
      Subclasses may override this
      Specified by:
      declaresWindows in interface QueryPartInternal
    • declaresCTE

      public boolean declaresCTE()
      Subclasses may override this
      Specified by:
      declaresCTE in interface QueryPartInternal
    • declaresParameters

      @Pro public boolean declaresParameters()
      Subclasses may override this
      Specified by:
      declaresParameters in interface QueryPartInternal
    • generatesCast

      public boolean generatesCast()
      Subclasses may override this
      Specified by:
      generatesCast in interface QueryPartInternal
    • toString

      public String toString()
      Description copied from interface: QueryPart
      Render a SQL string representation of this QueryPart.

      For improved debugging, this renders a SQL string of this QueryPart with inlined bind variables. If this QueryPart is Attachable, then the attached Configuration may be used for rendering the SQL string, including SQLDialect and Settings. Do note that most QueryPart instances are not attached to a Configuration, and thus there is no guarantee that the SQL string will make sense in the context of a specific database.

      Specified by:
      toString in interface QueryPart
      Overrides:
      toString in class Object
      Returns:
      A SQL string representation of this QueryPart
    • create

      @Deprecated protected final DSLContext create()
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Configuration configuration)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • create

      @Deprecated protected final DSLContext create(Context<?> ctx)
      Deprecated.
      - 3.11.0 - [#6722] - Use Attachable.configuration() and Configuration.dsl() instead.
      Internal convenience method
    • translate

      protected final DataAccessException translate(String sql, SQLException e)
      Internal convenience method