Top Description Methods
org.jooq

public Interface SelectFromStep<R extends org.jooq.Record>

extends SelectWhereStep<R extends Record>
Known Direct Subinterfaces
org.jooq.SelectIntoStep
Imports
org.jetbrains.annotations.*, java.util.Collection, org.jooq.impl.DSL

This type is used for the Select's DSL API when selecting generic Record types.

Example:


-- get all authors' first and last names, and the number
-- of books they've written in German, if they have written
-- more than five books in German in the last three years
-- (from 2011), and sort those authors by last names
-- limiting results to the second and third row

  SELECT T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, COUNT(*)
    FROM T_AUTHOR
    JOIN T_BOOK ON T_AUTHOR.ID = T_BOOK.AUTHOR_ID
   WHERE T_BOOK.LANGUAGE = 'DE'
     AND T_BOOK.PUBLISHED > '2008-01-01'
GROUP BY T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME
  HAVING COUNT(*) > 5
ORDER BY T_AUTHOR.LAST_NAME ASC NULLS FIRST
   LIMIT 2
  OFFSET 1
     FOR UPDATE
      OF FIRST_NAME, LAST_NAME
      NO WAIT
Its equivalent in jOOQ

create.select(TAuthor.FIRST_NAME, TAuthor.LAST_NAME, create.count())
      .from(T_AUTHOR)
      .join(T_BOOK).on(TBook.AUTHOR_ID.equal(TAuthor.ID))
      .where(TBook.LANGUAGE.equal("DE"))
      .and(TBook.PUBLISHED.greaterThan(parseDate('2008-01-01')))
      .groupBy(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
      .having(create.count().greaterThan(5))
      .orderBy(TAuthor.LAST_NAME.asc().nullsFirst())
      .limit(2)
      .offset(1)
      .forUpdate()
      .of(TAuthor.FIRST_NAME, TAuthor.LAST_NAME)
      .noWait();
Refer to the manual for more details

Referencing XYZ*Step types directly from client code

It is usually not recommended to reference any XYZ*Step types directly from client code, or assign them to local variables. When writing dynamic SQL, creating a statement's components dynamically, and passing them to the DSL API statically is usually a better choice. See the manual's section about dynamic SQL for details: https://www.jooq.org/doc/latest/manual/sql-building/dynamic-sql.

Drawbacks of referencing the XYZ*Step types directly:

Author
Lukas Eder

Method Summary

Modifier and TypeMethod and Description
public @NotNull SelectJoinStep<R>
from(TableLike<?> table)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(TableLike<?>... tables)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(Collection<? extends TableLike<?>> tables)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(SQL sql)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(String sql)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(String sql, Object... bindings)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(String sql, QueryPart... parts)

Add a FROM clause to the query.

public @NotNull SelectJoinStep<R>
from(Name name)

Add a FROM clause to the query.

public @NotNull SelectFromStep<R>
hint(String hint)

Add an Oracle-style hint to the preceding select clause.

Inherited from org.jooq.SelectWhereStep:
wherewherewherewherewherewherewherewherewhereExistswhereNotExists

Method Detail

fromback to summary
public @NotNull SelectJoinStep<R> from(TableLike<?> table)

Add a FROM clause to the query.

Annotations
@NotNull
@CheckReturnValue
@Support
fromback to summary
public @NotNull SelectJoinStep<R> from(TableLike<?>... tables)

Add a FROM clause to the query.

Annotations
@NotNull
@CheckReturnValue
@Support
fromback to summary
public @NotNull SelectJoinStep<R> from(Collection<? extends TableLike<?>> tables)

Add a FROM clause to the query.

Annotations
@NotNull
@CheckReturnValue
@Support
fromback to summary
public @NotNull SelectJoinStep<R> from(SQL sql)

Add a FROM clause to the 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!

Annotations
@NotNull
@CheckReturnValue
@Support
@PlainSQL
See Also
DSL#table(SQL), SQL
fromback to summary
public @NotNull SelectJoinStep<R> from(String sql)

Add a FROM clause to the 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!

Annotations
@NotNull
@CheckReturnValue
@Support
@PlainSQL
See Also
DSL#table(String), SQL
fromback to summary
public @NotNull SelectJoinStep<R> from(String sql, Object... bindings)

Add a FROM clause to the 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!

Annotations
@NotNull
@CheckReturnValue
@Support
@PlainSQL
See Also
DSL#table(String, Object...), DSL#sql(String, Object...), SQL
fromback to summary
public @NotNull SelectJoinStep<R> from(String sql, QueryPart... parts)

Add a FROM clause to the 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!

Annotations
@NotNull
@CheckReturnValue
@Support
@PlainSQL
See Also
DSL#table(String, QueryPart...), DSL#sql(String, QueryPart...), SQL
fromback to summary
public @NotNull SelectJoinStep<R> from(Name name)

Add a FROM clause to the query.

Annotations
@NotNull
@CheckReturnValue
@Support
See Also
DSL#table(Name)
hintback to summary
public @NotNull SelectFromStep<R> hint(String hint)

Add an Oracle-style hint to the preceding select clause.

Example:


DSLContext create = DSL.using(configuration);

create.select(field1, field2)
      .hint("/*+ALL_ROWS*/")
      .from(table1)
      .fetch();

You can also use this clause for any other database, that accepts hints or options at the same syntactic location, e.g. for MySQL's SQL_CALC_FOUND_ROWS option:


create.select(field1, field2)
      .hint("SQL_CALC_FOUND_ROWS")
      .from(table1)
      .fetch();

The outcome of such a query is this:


SELECT [hint] field1, field2 FROM table1

For SQL Server style table hints, see Table#with(String)

Annotations
@NotNull
@CheckReturnValue
@Support
See Also
Table#with(String), SelectQuery#addHint(String)