diesel::query_builder

Struct SelectStatement

Source
#[non_exhaustive]
pub struct SelectStatement<From, Select = DefaultSelectClause<From>, Distinct = NoDistinctClause, Where = NoWhereClause, Order = NoOrderClause, LimitOffset = LimitOffsetClause<NoLimitClause, NoOffsetClause>, GroupBy = NoGroupByClause, Having = NoHavingClause, Locking = NoLockingClause> { pub select: Select, pub from: From, pub distinct: Distinct, pub where_clause: Where, pub order: Order, pub limit_offset: LimitOffset, pub group_by: GroupBy, pub having: Having, pub locking: Locking, }
Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Expand description

This type represents a select query

Using this type directly is only meaningful for custom backends that need to provide a custom QueryFragment implementation

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§select: Select

The select clause of the query

§from: From

The from clause of the query

§distinct: Distinct

The distinct clause of the query

§where_clause: Where

The where clause of the query

§order: Order

The order clause of the query

§limit_offset: LimitOffset

The combined limit/offset clause of the query

§group_by: GroupBy

The group by clause of the query

§having: Having

The having clause of the query

§locking: Locking

The locking clause of the query

Trait Implementations§

Source§

impl<From, T> AppearsInFromClause<T> for SelectStatement<From>
where From: AsQuerySource, From::QuerySource: AppearsInFromClause<T> + QuerySource,

Allow SelectStatement<From> to act as if it were From as long as no other query methods have been called on it

Source§

type Count = <<From as AsQuerySource>::QuerySource as AppearsInFromClause<T>>::Count

How many times does Self appear in QS?
Source§

impl<ST, F, S, D, W, O, LOf, G, H, LC> AsInExpression<ST> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where ST: SqlType, Subselect<Self, ST>: Expression<SqlType = ST>, Self: SelectQuery<SqlType = ST>,

Source§

type InExpression = Subselect<SelectStatement<F, S, D, W, O, LOf, G, H, LC>, ST>

Type of the expression returned by AsInExpression::as_in_expression
Source§

fn as_in_expression(self) -> Self::InExpression

Construct the diesel query dsl representation of the IN (values) clause for the given type
Source§

impl<'a, S, D, W, O, LOf, G, H, DB> BoxedDsl<'a, DB> for SelectStatement<NoFromClause, S, D, W, O, LOf, G, H>
where Self: AsQuery, DB: Backend, S: SelectClauseExpression<NoFromClause> + QueryFragment<DB> + Send + 'a, S::Selection: ValidGrouping<G::Expressions>, D: QueryFragment<DB> + Send + 'a, W: Into<BoxedWhereClause<'a, DB>>, O: Into<Option<Box<dyn QueryFragment<DB> + Send + 'a>>>, LOf: IntoBoxedClause<'a, DB, BoxedClause = BoxedLimitOffsetClause<'a, DB>>, G: ValidGroupByClause + QueryFragment<DB> + Send + 'a, H: QueryFragment<DB> + Send + 'a,

Source§

type Output = BoxedSelectStatement<'a, <S as SelectClauseExpression<NoFromClause>>::SelectClauseSqlType, NoFromClause, DB, <G as ValidGroupByClause>::Expressions>

The return type of internal_into_boxed
Source§

fn internal_into_boxed(self) -> Self::Output

See the trait documentation.
Source§

impl<From: Clone, Select: Clone, Distinct: Clone, Where: Clone, Order: Clone, LimitOffset: Clone, GroupBy: Clone, Having: Clone, Locking: Clone> Clone for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>

Source§

fn clone( &self, ) -> SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<F, S, D, W, O, LOf, G, H, LC> CombineDsl for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Self: Query,

Source§

type Query = SelectStatement<F, S, D, W, O, LOf, G, H, LC>

What kind of query does this type represent?
Source§

fn union<Rhs>(self, rhs: Rhs) -> Union<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL UNION Read more
Source§

fn union_all<Rhs>(self, rhs: Rhs) -> UnionAll<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL UNION ALL
Source§

fn intersect<Rhs>(self, rhs: Rhs) -> Intersect<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL INTERSECT
Source§

fn intersect_all<Rhs>(self, rhs: Rhs) -> IntersectAll<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL INTERSECT ALL
Source§

fn except<Rhs>(self, rhs: Rhs) -> Except<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL EXCEPT
Source§

fn except_all<Rhs>(self, rhs: Rhs) -> ExceptAll<Self, Rhs>
where Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>,

Combine two queries using a SQL EXCEPT ALL
Source§

impl<From: Debug, Select: Debug, Distinct: Debug, Where: Debug, Order: Debug, LimitOffset: Debug, GroupBy: Debug, Having: Debug, Locking: Debug> Debug for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<ST, F, S, D, W, O, LOf, G, H> DistinctDsl for SelectStatement<F, S, D, W, O, LOf, G, H>
where Self: SelectQuery<SqlType = ST>, SelectStatement<F, S, DistinctClause, W, O, LOf, G, H>: SelectQuery<SqlType = ST>,

Source§

type Output = SelectStatement<F, S, DistinctClause, W, O, LOf, G, H>

The type returned by .distinct
Source§

fn distinct(self) -> Self::Output

See the trait documentation.
Source§

impl<F, S, D, W, O, LOf, G, H, LC, Predicate> FilterDsl<Predicate> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Predicate: Expression + NonAggregate, Predicate::SqlType: BoolOrNullableBool, W: WhereAnd<Predicate>,

Source§

type Output = SelectStatement<F, S, D, <W as WhereAnd<Predicate>>::Output, O, LOf, G, H, LC>

The type returned by .filter.
Source§

fn filter(self, predicate: Predicate) -> Self::Output

See the trait documentation.
Source§

impl<F, S, D, W, O, LOf, G, H, Expr> GroupByDsl<Expr> for SelectStatement<F, S, D, W, O, LOf, G, H>
where SelectStatement<F, S, D, W, O, LOf, GroupByClause<Expr>, H>: SelectQuery, Expr: Expression + AppearsOnTable<F>,

Source§

type Output = SelectStatement<F, S, D, W, O, LOf, GroupByClause<Expr>, H>

The type returned by .group_by
Source§

fn group_by(self, expr: Expr) -> Self::Output

See the trait documentation.
Source§

impl<F, S, D, W, O, LOf, G, H, LC, Tab> Insertable<Tab> for &SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Tab: Table, Self: Query, <Tab::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<&SelectStatement<F, S, D, W, O, LOf, G, H, LC>, <Tab as Table>::AllColumns>

The VALUES clause to insert these records Read more
Source§

fn values(self) -> Self::Values

Construct Self::Values Read more
Source§

fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>
where T: Table, Self: Sized,

Insert self into a given table. Read more
Source§

impl<F, S, D, W, O, LOf, G, H, LC, Tab> Insertable<Tab> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Tab: Table, Self: Query, <Tab::AllColumns as ValidGrouping<()>>::IsAggregate: MixedAggregates<No, Output = No>,

Source§

type Values = InsertFromSelect<SelectStatement<F, S, D, W, O, LOf, G, H, LC>, <Tab as Table>::AllColumns>

The VALUES clause to insert these records Read more
Source§

fn values(self) -> Self::Values

Construct Self::Values Read more
Source§

fn insert_into(self, table: T) -> InsertStatement<T, Self::Values>
where T: Table, Self: Sized,

Insert self into a given table. Read more
Source§

impl<ST, F, S, D, W, O, LOf, G, H, LC> IntoArrayExpression<ST> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where ST: SqlType + TypedExpressionType, ArraySubselect<Self, ST>: Expression<SqlType = Array<ST>>, Self: SelectQuery<SqlType = ST>,

Available on crate feature postgres_backend only.
Source§

type ArrayExpression = ArraySubselect<SelectStatement<F, S, D, W, O, LOf, G, H, LC>, ST>

Type of the expression returned by [AsArrayExpression::as_in_expression]
Source§

fn into_array_expression(self) -> Self::ArrayExpression

Construct the diesel query dsl representation of the ARRAY (values) clause for the given type
Source§

impl<ST, F, S, D, W, O, L, Of, G, H, LC> LimitDsl for SelectStatement<F, S, D, W, O, LimitOffsetClause<L, Of>, G, H, LC>
where Self: SelectQuery<SqlType = ST>, SelectStatement<F, S, D, W, O, LimitOffsetClause<LimitClause<AsExprOf<i64, BigInt>>, Of>, G, H, LC>: SelectQuery<SqlType = ST>,

Source§

type Output = SelectStatement<F, S, D, W, O, LimitOffsetClause<LimitClause<<i64 as AsExpression<BigInt>>::Expression>, Of>, G, H, LC>

The type returned by .limit
Source§

fn limit(self, limit: i64) -> Self::Output

See the trait documentation
Source§

impl<F, S, W, O, LOf, Lock> LockingDsl<Lock> for SelectStatement<F, S, NoDistinctClause, W, O, LOf>

Source§

type Output = SelectStatement<F, S, NoDistinctClause, W, O, LOf, NoGroupByClause, NoHavingClause, LockingClause<Lock>>

The type returned by set_lock. See dsl::ForUpdate and friends for convenient access to this type.
Source§

fn with_lock(self, lock: Lock) -> Self::Output

See the trait level documentation
Source§

impl<F, S, D, W, O, LOf, G, H, LC, LM, Modifier> ModifyLockDsl<Modifier> for SelectStatement<F, S, D, W, O, LOf, G, H, LockingClause<LC, LM>>

Source§

type Output = SelectStatement<F, S, D, W, O, LOf, G, H, LockingClause<LC, Modifier>>

The type returned by modify_lock. See dsl::SkipLocked and friends for convenient access to this type.
Source§

fn modify_lock(self, modifier: Modifier) -> Self::Output

See the trait level documentation
Source§

impl<ST, F, S, D, W, O, L, Of, G, H, LC> OffsetDsl for SelectStatement<F, S, D, W, O, LimitOffsetClause<L, Of>, G, H, LC>
where Self: SelectQuery<SqlType = ST>, SelectStatement<F, S, D, W, O, LimitOffsetClause<L, OffsetClause<AsExprOf<i64, BigInt>>>, G, H, LC>: SelectQuery<SqlType = ST>,

Source§

type Output = SelectStatement<F, S, D, W, O, LimitOffsetClause<L, OffsetClause<<i64 as AsExpression<BigInt>>::Expression>>, G, H, LC>

The type returned by .offset.
Source§

fn offset(self, offset: i64) -> Self::Output

See the trait documentation
Source§

impl<F, S, D, W, O, LOf, G, H, LC, Predicate> OrFilterDsl<Predicate> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where Predicate: Expression + NonAggregate, Predicate::SqlType: BoolOrNullableBool, W: WhereOr<Predicate>,

Source§

type Output = SelectStatement<F, S, D, <W as WhereOr<Predicate>>::Output, O, LOf, G, H, LC>

The type returned by .filter.
Source§

fn or_filter(self, predicate: Predicate) -> Self::Output

See the trait documentation.
Source§

impl<F, S, D, W, O, LOf, G, H, LC> Query for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where G: ValidGroupByClause, S: SelectClauseExpression<F>, S::Selection: ValidGrouping<G::Expressions>, W: ValidWhereClause<F>,

Source§

type SqlType = <S as SelectClauseExpression<F>>::SelectClauseSqlType

The SQL type that this query represents. Read more
Source§

impl<F, S, D, W, O, LOf, G, H, LC> QueryDsl for SelectStatement<F, S, D, W, O, LOf, G, H, LC>

Source§

fn distinct(self) -> Distinct<Self>
where Self: DistinctDsl,

Adds the DISTINCT keyword to a query. Read more
Source§

fn distinct_on<Expr>(self, expr: Expr) -> DistinctOn<Self, Expr>
where Self: DistinctOnDsl<Expr>,

Available on crate feature postgres_backend only.
Adds the DISTINCT ON clause to a query. Read more
Source§

fn select<Selection>(self, selection: Selection) -> Select<Self, Selection>
where Selection: Expression, Self: SelectDsl<Selection>,

Adds a SELECT clause to the query. Read more
Source§

fn count(self) -> Select<Self, CountStar>
where Self: SelectDsl<CountStar>,

Get the count of a query. This is equivalent to .select(count_star()) Read more
Source§

fn inner_join<Rhs>(self, rhs: Rhs) -> InnerJoin<Self, Rhs>
where Self: JoinWithImplicitOnClause<Rhs, Inner>,

Join two tables using a SQL INNER JOIN. Read more
Source§

fn left_outer_join<Rhs>(self, rhs: Rhs) -> LeftJoin<Self, Rhs>
where Self: JoinWithImplicitOnClause<Rhs, LeftOuter>,

Join two tables using a SQL LEFT OUTER JOIN. Read more
Source§

fn left_join<Rhs>(self, rhs: Rhs) -> LeftJoin<Self, Rhs>
where Self: JoinWithImplicitOnClause<Rhs, LeftOuter>,

Alias for left_outer_join.
Source§

fn filter<Predicate>(self, predicate: Predicate) -> Filter<Self, Predicate>
where Self: FilterDsl<Predicate>,

Adds to the WHERE clause of a query. Read more
Source§

fn or_filter<Predicate>(self, predicate: Predicate) -> OrFilter<Self, Predicate>
where Self: OrFilterDsl<Predicate>,

Adds to the WHERE clause of a query using OR Read more
Source§

fn find<PK>(self, id: PK) -> Find<Self, PK>
where Self: FindDsl<PK>,

Attempts to find a single record from the given table by primary key. Read more
Source§

fn order<Expr>(self, expr: Expr) -> Order<Self, Expr>
where Expr: Expression, Self: OrderDsl<Expr>,

Sets the order clause of a query. Read more
Source§

fn order_by<Expr>(self, expr: Expr) -> OrderBy<Self, Expr>
where Expr: Expression, Self: OrderDsl<Expr>,

Alias for order
Source§

fn then_order_by<Order>(self, order: Order) -> ThenOrderBy<Self, Order>
where Self: ThenOrderDsl<Order>,

Appends to the ORDER BY clause of this SQL query. Read more
Source§

fn limit(self, limit: i64) -> Limit<Self>
where Self: LimitDsl,

Sets the limit clause of the query. Read more
Source§

fn offset(self, offset: i64) -> Offset<Self>
where Self: OffsetDsl,

Sets the offset clause of the query. Read more
Source§

fn group_by<GB>(self, group_by: GB) -> GroupBy<Self, GB>
where GB: Expression, Self: GroupByDsl<GB>,

Sets the group by clause of a query. Read more
Source§

fn having<Predicate>(self, predicate: Predicate) -> Having<Self, Predicate>
where Self: HavingDsl<Predicate>,

Adds to the HAVING clause of a query. Read more
Source§

fn for_update(self) -> ForUpdate<Self>
where Self: LockingDsl<ForUpdate>,

Adds FOR UPDATE to the end of the select statement. Read more
Source§

fn for_no_key_update(self) -> ForNoKeyUpdate<Self>
where Self: LockingDsl<ForNoKeyUpdate>,

Adds FOR NO KEY UPDATE to the end of the select statement. Read more
Source§

fn for_share(self) -> ForShare<Self>
where Self: LockingDsl<ForShare>,

Adds FOR SHARE to the end of the select statement. Read more
Source§

fn for_key_share(self) -> ForKeyShare<Self>
where Self: LockingDsl<ForKeyShare>,

Adds FOR KEY SHARE to the end of the select statement. Read more
Source§

fn skip_locked(self) -> SkipLocked<Self>
where Self: ModifyLockDsl<SkipLocked>,

Adds SKIP LOCKED to the end of a FOR UPDATE clause. Read more
Source§

fn no_wait(self) -> NoWait<Self>
where Self: ModifyLockDsl<NoWait>,

Adds NOWAIT to the end of a FOR UPDATE clause. Read more
Source§

fn into_boxed<'a, DB>(self) -> IntoBoxed<'a, Self, DB>
where DB: Backend, Self: BoxedDsl<'a, DB>,

Boxes the pieces of a query into a single type. Read more
Source§

fn single_value(self) -> SingleValue<Self>
where Self: SingleValueDsl,

Wraps this select statement in parenthesis, allowing it to be used as an expression. Read more
Source§

fn nullable(self) -> NullableSelect<Self>
where Self: SelectNullableDsl,

Coerce the SQL type of the select clause to it’s nullable equivalent. Read more
Source§

impl<F, S, D, W, O, LOf, G, H, LC, DB> QueryFragment<DB> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where DB: Backend, Self: QueryFragment<DB, DB::SelectStatementSyntax>,

Source§

fn walk_ast<'b>(&'b self, pass: AstPass<'_, 'b, DB>) -> QueryResult<()>

Walk over this QueryFragment for all passes. Read more
Source§

fn to_sql(&self, out: &mut DB::QueryBuilder, backend: &DB) -> QueryResult<()>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Converts this QueryFragment to its SQL representation. Read more
Source§

fn collect_binds<'b>( &'b self, out: &mut DB::BindCollector<'b>, metadata_lookup: &mut DB::MetadataLookup, backend: &'b DB, ) -> QueryResult<()>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Serializes all bind parameters in this query. Read more
Source§

fn is_safe_to_cache_prepared(&self, backend: &DB) -> QueryResult<bool>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Is this query safe to store in the prepared statement cache? Read more
Source§

fn is_noop(&self, backend: &DB) -> QueryResult<bool>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Does walking this AST have any effect?
Source§

impl<F, S, D, W, O, LOf, G, H, LC, DB> QueryFragment<DB, AnsiSqlSelectStatement> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where DB: Backend<SelectStatementSyntax = AnsiSqlSelectStatement>, S: QueryFragment<DB>, F: QueryFragment<DB>, D: QueryFragment<DB>, W: QueryFragment<DB>, O: QueryFragment<DB>, LOf: QueryFragment<DB>, G: QueryFragment<DB>, H: QueryFragment<DB>, LC: QueryFragment<DB>,

Source§

fn walk_ast<'b>(&'b self, out: AstPass<'_, 'b, DB>) -> QueryResult<()>

Walk over this QueryFragment for all passes. Read more
Source§

fn to_sql(&self, out: &mut DB::QueryBuilder, backend: &DB) -> QueryResult<()>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Converts this QueryFragment to its SQL representation. Read more
Source§

fn collect_binds<'b>( &'b self, out: &mut DB::BindCollector<'b>, metadata_lookup: &mut DB::MetadataLookup, backend: &'b DB, ) -> QueryResult<()>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Serializes all bind parameters in this query. Read more
Source§

fn is_safe_to_cache_prepared(&self, backend: &DB) -> QueryResult<bool>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Is this query safe to store in the prepared statement cache? Read more
Source§

fn is_noop(&self, backend: &DB) -> QueryResult<bool>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Does walking this AST have any effect?
Source§

impl<From: QueryId, Select: QueryId, Distinct: QueryId, Where: QueryId, Order: QueryId, LimitOffset: QueryId, GroupBy: QueryId, Having: QueryId, Locking: QueryId> QueryId for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>

Source§

const HAS_STATIC_QUERY_ID: bool = _

Can the SQL generated by Self be uniquely identified by its type? Read more
Source§

type QueryId = SelectStatement<<From as QueryId>::QueryId, <Select as QueryId>::QueryId, <Distinct as QueryId>::QueryId, <Where as QueryId>::QueryId, <Order as QueryId>::QueryId, <LimitOffset as QueryId>::QueryId, <GroupBy as QueryId>::QueryId, <Having as QueryId>::QueryId, <Locking as QueryId>::QueryId>

A type which uniquely represents Self in a SQL query. Read more
Source§

fn query_id() -> Option<TypeId>

Returns the type id of Self::QueryId if Self::HAS_STATIC_QUERY_ID. Returns None otherwise. Read more
Source§

impl<From> QuerySource for SelectStatement<From>
where From: AsQuerySource, <From::QuerySource as QuerySource>::DefaultSelection: SelectableExpression<Self>,

Source§

type FromClause = <<From as AsQuerySource>::QuerySource as QuerySource>::FromClause

The type returned by from_clause
Source§

type DefaultSelection = <<From as AsQuerySource>::QuerySource as QuerySource>::DefaultSelection

The type returned by default_selection
Source§

fn from_clause(&self) -> <From::QuerySource as QuerySource>::FromClause

The actual FROM clause of this type. This is typically only called in QueryFragment implementations.
Source§

fn default_selection(&self) -> Self::DefaultSelection

The default select clause of this type, which should be used if no select clause was explicitly specified. This should always be a tuple of all the desired columns, not star
Source§

impl<F, S, D, W, O, LOf, G, H, LC, Conn> RunQueryDsl<Conn> for SelectStatement<F, S, D, W, O, LOf, G, H, LC>

Source§

fn execute(self, conn: &mut Conn) -> QueryResult<usize>
where Conn: Connection, Self: ExecuteDsl<Conn>,

Executes the given command, returning the number of rows affected. Read more
Source§

fn load<'query, U>(self, conn: &mut Conn) -> QueryResult<Vec<U>>
where Self: LoadQuery<'query, Conn, U>,

Executes the given query, returning a Vec with the returned rows. Read more
Source§

fn load_iter<'conn, 'query: 'conn, U, B>( self, conn: &'conn mut Conn, ) -> QueryResult<Self::RowIter<'conn>>
where U: 'conn, Self: LoadQuery<'query, Conn, U, B> + 'conn,

Executes the given query, returning an Iterator with the returned rows. Read more
Source§

fn get_result<'query, U>(self, conn: &mut Conn) -> QueryResult<U>
where Self: LoadQuery<'query, Conn, U>,

Runs the command, and returns the affected row. Read more
Source§

fn get_results<'query, U>(self, conn: &mut Conn) -> QueryResult<Vec<U>>
where Self: LoadQuery<'query, Conn, U>,

Runs the command, returning an Vec with the affected rows. Read more
Source§

fn first<'query, U>(self, conn: &mut Conn) -> QueryResult<U>
where Self: LimitDsl, Limit<Self>: LoadQuery<'query, Conn, U>,

Attempts to load a single record. Read more
Source§

impl<S, D, W, O, LOf, G, H, LC, Selection> SelectDsl<Selection> for SelectStatement<NoFromClause, S, D, W, O, LOf, G, H, LC>
where G: ValidGroupByClause, Selection: SelectableExpression<NoFromClause> + ValidGrouping<G::Expressions>, SelectStatement<NoFromClause, SelectClause<Selection>, D, W, O, LOf, G, H, LC>: SelectQuery,

Source§

type Output = SelectStatement<NoFromClause, SelectClause<Selection>, D, W, O, LOf, G, H, LC>

The type returned by .select
Source§

fn select(self, selection: Selection) -> Self::Output

See the trait documentation
Source§

impl<F, S, D, W, O, LOf, G, H> SelectNullableDsl for SelectStatement<F, SelectClause<S>, D, W, O, LOf, G, H>

Source§

type Output = SelectStatement<F, SelectClause<Nullable<S>>, D, W, O, LOf, G, H>

The return type of nullable
Source§

fn nullable(self) -> Self::Output

See the trait documentation
Source§

impl<F, S, D, W, O, LOf, G, H, LC> SelectQuery for SelectStatement<F, S, D, W, O, LOf, G, H, LC>
where S: SelectClauseExpression<F>, O: ValidOrderingForDistinct<D>,

Source§

type SqlType = <S as SelectClauseExpression<F>>::SelectClauseSqlType

The SQL type of the SELECT clause
Source§

impl<F, S, D, W, LOf, G, LC, Expr> ThenOrderDsl<Expr> for SelectStatement<F, S, D, W, NoOrderClause, LOf, G, LC>
where Expr: Expression, Self: OrderDsl<Expr>,

Source§

type Output = <SelectStatement<F, S, D, W, NoOrderClause, LOf, G, LC> as OrderDsl<Expr>>::Output

The type returned by .then_order_by.
Source§

fn then_order_by(self, expr: Expr) -> Self::Output

See the trait documentation.
Source§

impl<From: Copy, Select: Copy, Distinct: Copy, Where: Copy, Order: Copy, LimitOffset: Copy, GroupBy: Copy, Having: Copy, Locking: Copy> Copy for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>

Auto Trait Implementations§

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> Freeze for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: Freeze, From: Freeze, Distinct: Freeze, Where: Freeze, Order: Freeze, LimitOffset: Freeze, GroupBy: Freeze, Having: Freeze, Locking: Freeze,

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> RefUnwindSafe for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: RefUnwindSafe, From: RefUnwindSafe, Distinct: RefUnwindSafe, Where: RefUnwindSafe, Order: RefUnwindSafe, LimitOffset: RefUnwindSafe, GroupBy: RefUnwindSafe, Having: RefUnwindSafe, Locking: RefUnwindSafe,

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> Send for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: Send, From: Send, Distinct: Send, Where: Send, Order: Send, LimitOffset: Send, GroupBy: Send, Having: Send, Locking: Send,

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> Sync for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: Sync, From: Sync, Distinct: Sync, Where: Sync, Order: Sync, LimitOffset: Sync, GroupBy: Sync, Having: Sync, Locking: Sync,

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> Unpin for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: Unpin, From: Unpin, Distinct: Unpin, Where: Unpin, Order: Unpin, LimitOffset: Unpin, GroupBy: Unpin, Having: Unpin, Locking: Unpin,

§

impl<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking> UnwindSafe for SelectStatement<From, Select, Distinct, Where, Order, LimitOffset, GroupBy, Having, Locking>
where Select: UnwindSafe, From: UnwindSafe, Distinct: UnwindSafe, Where: UnwindSafe, Order: UnwindSafe, LimitOffset: UnwindSafe, GroupBy: UnwindSafe, Having: UnwindSafe, Locking: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsQuery for T
where T: Query,

Source§

type SqlType = <T as Query>::SqlType

The SQL type of Self::Query
Source§

type Query = T

What kind of query does this type represent?
Source§

fn as_query(self) -> <T as AsQuery>::Query

Converts a type which semantically represents a SQL query into the actual query being executed. See the trait level docs for more.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<Conn, DB, T> ExecuteDsl<Conn, DB> for T
where Conn: Connection<Backend = DB>, DB: Backend, T: QueryFragment<DB> + QueryId,

Source§

fn execute(query: T, conn: &mut Conn) -> Result<usize, Error>

Execute this command
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoSql for T

Source§

fn into_sql<T>(self) -> AsExprOf<Self, T>

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
Source§

impl<T> JoinOnDsl for T
where T: QuerySource,

Source§

fn on<On>(self, on: On) -> On<Self, On>

See the trait documentation.
Source§

impl<T, DB> QueryFragmentForCachedStatement<DB> for T
where DB: Backend, <DB as Backend>::QueryBuilder: Default, T: QueryFragment<DB>,

Source§

fn construct_sql(&self, backend: &DB) -> Result<String, Error>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Convert the query fragment into a SQL string for the given backend
Source§

fn is_safe_to_cache_prepared(&self, backend: &DB) -> Result<bool, Error>

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
Check whether it’s safe to cache the query
Source§

impl<T> SingleValueDsl for T

Source§

type Output = Grouped<Subselect<<T as LimitDsl>::Output, <<T as SelectQuery>::SqlType as IntoNullable>::Nullable>>

The type returned by .single_value.
Source§

fn single_value(self) -> <T as SingleValueDsl>::Output

See the trait documentation.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T