Expand description
Common Table Expressions (CTEs) for SQL queries.
Provides support for WITH clauses including recursive CTEs.
§Example
ⓘ
use sqlmodel_query::{Cte, CteRef, select};
// Basic CTE
let active_users = Cte::new("active_users")
.query(select!(User).filter(Expr::col("active").eq(true)));
// Query using the CTE
let query = select_from_cte(&active_users)
.columns(&["name", "email"]);
// Recursive CTE for hierarchical data
let hierarchy = Cte::recursive("hierarchy")
.columns(&["id", "name", "manager_id", "level"])
.initial(
select!(Employee)
.filter(Expr::col("manager_id").is_null())
)
.recursive_term(|cte| {
select!(Employee)
.join_on("hierarchy", Expr::col("manager_id").eq(cte.col("id")))
});