pub trait CombineDsl {
    type Query: Query;

    fn union<Rhs>(self, rhs: Rhs) -> Union<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; fn union_all<Rhs>(self, rhs: Rhs) -> UnionAll<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; fn intersect<Rhs>(self, rhs: Rhs) -> Intersect<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; fn intersect_all<Rhs>(self, rhs: Rhs) -> IntersectAll<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; fn except<Rhs>(self, rhs: Rhs) -> Except<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; fn except_all<Rhs>(self, rhs: Rhs) -> ExceptAll<Self, Rhs>
    where
        Rhs: AsQuery<SqlType = <Self::Query as Query>::SqlType>
; }
Expand description

Extension trait to combine queries using a combinator like UNION, INTERSECT or EXPECT with or without ALL rule for duplicates

Required Associated Types

What kind of query does this type represent?

Required Methods

Combine two queries using a SQL UNION

Examples
let data = users.select(user_name.nullable())
    .union(animals.select(animal_name).filter(animal_name.is_not_null()))
    .load(connection);

let expected_data = vec![
    Some(String::from("Jack")),
    Some(String::from("Sean")),
    Some(String::from("Tess")),
];
assert_eq!(Ok(expected_data), data);

Combine two queries using a SQL UNION ALL

Combine two queries using a SQL INTERSECT

Combine two queries using a SQL INTERSECT ALL

Combine two queries using a SQL EXCEPT

Combine two queries using a SQL EXCEPT ALL

Implementors