Appearance
Union β
Union queries are supported with the following restrictions.
- MySQL: When selecting specific fields from a UNION, a union alias is required
These restrictions are inherent to the database engines, not limitations of the Query Builder
Available Methods β
The following methods support union operations:
Query.Union()- Combines results with duplicate removalQuery.UnionAll()- Combines results including duplicatesQuery.Intersect()- Returns only rows common to both queriesQuery.Except()- Returns rows from first query not present in secondQuery.UnionAlias()- Set the union alias for the current query
Examples β
Simple Union β
csharp
List<ExampleTable> unionRows = dbConnector.QueryBuilder().Build(query => query
.Select()
.Union(query => query
.Select<ExampleTable>()
.From<ExampleTable>()
.WhereLowerEquals<ExampleTable>(row => row.Id, 10)
)
.Union(query => query
.Select<ExampleTable>()
.From<ExampleTable>()
.WhereGreater <ExampleTable>(row => row.Id, 10)
.WhereLowerEquals<ExampleTable>(row => row.Id, 20)
)
.OrderBy(typeof(ExampleTable).GetColumnName(nameof(ExampleTable.Id)))
).ToList<ExampleTable>();sql
SELECT
"example_table"."id",
"example_table"."_mediumtext",
"example_table"."_longtext",
"example_table"."_json",
"example_table"."_longblob",
"example_table"."_enum",
"example_table"."_varchar"
FROM
"example_table"
WHERE
"example_table"."id"<=10
UNION
SELECT
"example_table"."id",
"example_table"."_mediumtext",
"example_table"."_longtext",
"example_table"."_json",
"example_table"."_longblob",
"example_table"."_enum",
"example_table"."_varchar"
FROM
"example_table"
WHERE
"example_table"."id">10
AND
"example_table"."id"<=20
ORDER BY
"id" ASCUnion as Subselect β
csharp
List<ExampleTable> unionRows = dbConnector.QueryBuilder().Build(query => query
.From(query => query
.Select()
.Union(query => query
.Select<ExampleTable>()
.From<ExampleTable>()
.WhereLowerEquals<ExampleTable>(row => row.Id, 10)
)
.Union(query => query
.Select<ExampleTable>()
.From<ExampleTable>()
.WhereGreater <ExampleTable>(row => row.Id, 10)
.WhereLowerEquals<ExampleTable>(row => row.Id, 20)
)
,"unioned")
.OrderBy(typeof(ExampleTable).GetColumnName(nameof(ExampleTable.Id)))
.Select()
).ToList<ExampleTable>();sql
SELECT
*
FROM (
SELECT
"example_table"."id",
"example_table"."_mediumtext",
"example_table"."_longtext",
"example_table"."_json",
"example_table"."_longblob",
"example_table"."_enum",
"example_table"."_varchar"
FROM
"example_table"
WHERE
"example_table"."id"<=10
UNION
SELECT
"example_table"."id",
"example_table"."_mediumtext",
"example_table"."_longtext",
"example_table"."_json",
"example_table"."_longblob",
"example_table"."_enum",
"example_table"."_varchar"
FROM
"example_table"
WHERE
"example_table"."id">10
AND
"example_table"."id"<=20
) unioned
ORDER BY
"id" ASC