Trait sea_query::query::OrderedStatement
source · pub trait OrderedStatement {
fn clear_order_by(&mut self) -> &mut Self;
fn order_by<T>(&mut self, col: T, order: Order) -> &mut Self
where
T: IntoColumnRef,
{ ... }
fn order_by_expr(&mut self, expr: SimpleExpr, order: Order) -> &mut Self { ... }
fn order_by_customs<I, T>(&mut self, cols: I) -> &mut Self
where
T: ToString,
I: IntoIterator<Item = (T, Order)>,
{ ... }
fn order_by_columns<I, T>(&mut self, cols: I) -> &mut Self
where
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order)>,
{ ... }
fn order_by_with_nulls<T>(
&mut self,
col: T,
order: Order,
nulls: NullOrdering
) -> &mut Self
where
T: IntoColumnRef,
{ ... }
fn order_by_expr_with_nulls(
&mut self,
expr: SimpleExpr,
order: Order,
nulls: NullOrdering
) -> &mut Self { ... }
fn order_by_customs_with_nulls<I, T>(&mut self, cols: I) -> &mut Self
where
T: ToString,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
{ ... }
fn order_by_columns_with_nulls<I, T>(&mut self, cols: I) -> &mut Self
where
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
{ ... }
}
Required Methods§
sourcefn clear_order_by(&mut self) -> &mut Self
fn clear_order_by(&mut self) -> &mut Self
Clear order expressions
Provided Methods§
sourcefn order_by<T>(&mut self, col: T, order: Order) -> &mut Selfwhere
T: IntoColumnRef,
fn order_by<T>(&mut self, col: T, order: Order) -> &mut Selfwhere
T: IntoColumnRef,
Order by column.
Examples
Order by ASC and DESC
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Aspect)
.from(Glyph::Table)
.and_where(Expr::expr(Expr::col(Glyph::Aspect).if_null(0)).gt(2))
.order_by(Glyph::Image, Order::Desc)
.order_by((Glyph::Table, Glyph::Aspect), Order::Asc)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `aspect` FROM `glyph` WHERE IFNULL(`aspect`, 0) > 2 ORDER BY `image` DESC, `glyph`.`aspect` ASC"#
);
Order by custom field ordering
use sea_query::{tests_cfg::*, *};
let query = Query::select()
.columns([Glyph::Aspect])
.from(Glyph::Table)
.order_by(
Glyph::Id,
Order::Field(Values(vec![4.into(), 5.into(), 1.into(), 3.into()])),
)
.to_owned();
assert_eq!(
query.to_string(MysqlQueryBuilder),
[
r#"SELECT `aspect`"#,
r#"FROM `glyph`"#,
r#"ORDER BY CASE"#,
r#"WHEN `id`=4 THEN 0"#,
r#"WHEN `id`=5 THEN 1"#,
r#"WHEN `id`=1 THEN 2"#,
r#"WHEN `id`=3 THEN 3"#,
r#"ELSE 4 END"#,
]
.join(" ")
);
assert_eq!(
query.to_string(PostgresQueryBuilder),
[
r#"SELECT "aspect""#,
r#"FROM "glyph""#,
r#"ORDER BY CASE"#,
r#"WHEN "id"=4 THEN 0"#,
r#"WHEN "id"=5 THEN 1"#,
r#"WHEN "id"=1 THEN 2"#,
r#"WHEN "id"=3 THEN 3"#,
r#"ELSE 4 END"#,
]
.join(" ")
);
assert_eq!(
query.to_string(SqliteQueryBuilder),
[
r#"SELECT "aspect""#,
r#"FROM "glyph""#,
r#"ORDER BY CASE"#,
r#"WHEN "id"=4 THEN 0"#,
r#"WHEN "id"=5 THEN 1"#,
r#"WHEN "id"=1 THEN 2"#,
r#"WHEN "id"=3 THEN 3"#,
r#"ELSE 4 END"#,
]
.join(" ")
);
sourcefn order_by_expr(&mut self, expr: SimpleExpr, order: Order) -> &mut Self
fn order_by_expr(&mut self, expr: SimpleExpr, order: Order) -> &mut Self
Order by SimpleExpr
.
sourcefn order_by_customs<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: ToString,
I: IntoIterator<Item = (T, Order)>,
fn order_by_customs<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: ToString,
I: IntoIterator<Item = (T, Order)>,
Order by custom string.
sourcefn order_by_columns<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order)>,
fn order_by_columns<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order)>,
Order by vector of columns.
sourcefn order_by_with_nulls<T>(
&mut self,
col: T,
order: Order,
nulls: NullOrdering
) -> &mut Selfwhere
T: IntoColumnRef,
fn order_by_with_nulls<T>(
&mut self,
col: T,
order: Order,
nulls: NullOrdering
) -> &mut Selfwhere
T: IntoColumnRef,
Order by column with nulls order option.
Examples
use sea_query::{*, tests_cfg::*};
let query = Query::select()
.column(Glyph::Aspect)
.from(Glyph::Table)
.order_by_with_nulls(Glyph::Image, Order::Desc, NullOrdering::Last)
.order_by_with_nulls((Glyph::Table, Glyph::Aspect), Order::Asc, NullOrdering::First)
.to_owned();
assert_eq!(
query.to_string(PostgresQueryBuilder),
r#"SELECT "aspect" FROM "glyph" ORDER BY "image" DESC NULLS LAST, "glyph"."aspect" ASC NULLS FIRST"#
);
assert_eq!(
query.to_string(MysqlQueryBuilder),
r#"SELECT `aspect` FROM `glyph` ORDER BY `image` IS NULL ASC, `image` DESC, `glyph`.`aspect` IS NULL DESC, `glyph`.`aspect` ASC"#
);
sourcefn order_by_expr_with_nulls(
&mut self,
expr: SimpleExpr,
order: Order,
nulls: NullOrdering
) -> &mut Self
fn order_by_expr_with_nulls(
&mut self,
expr: SimpleExpr,
order: Order,
nulls: NullOrdering
) -> &mut Self
Order by SimpleExpr
with nulls order option.
sourcefn order_by_customs_with_nulls<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: ToString,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
fn order_by_customs_with_nulls<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: ToString,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
Order by custom string with nulls order option.
sourcefn order_by_columns_with_nulls<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
fn order_by_columns_with_nulls<I, T>(&mut self, cols: I) -> &mut Selfwhere
T: IntoColumnRef,
I: IntoIterator<Item = (T, Order, NullOrdering)>,
Order by vector of columns with nulls order option.