Subqueries
SQLBuilder
Subquery parameters accept a SQLBuilder, so you can use the full API.
Subquery in FROM
c#
var kit = DBCash.useSQL(0);
var dt = kit
.from("a", (d) => {
d.select("d.DD_FFocued,r.HH_MdmRiskOID")
.from("HH_MdmDangDeal d join HH_MdmRisk r on d.DD_RiskIssueId = r.MR_Id");
})
.where("a.idx=1")
.query();Subquery in JOIN
Pass join type and ON, then build the inner query:
c#
var kit = DBCash.useSQL(0);
var dt = kit
.select("a")
.from("tableA as a")
.join("left join","b on a.id=b.id", (t) => {
t.select("name")
.from("student")
.where("id=1");
})
.top(1)
.query();WHERE IN subquery
The column and subquery must match (SQL requirement).
c#
var kit = DBCash.useSQL(0);
var dt = kit
.select("a.Name")
.from("tableA as a")
.whereIn("a.Name", (t) => {
t.select("Name")
.from("student")
.where("id=1");
})
.top(1)
.query();CTEs
Simple CTE:
c#
var kit = DBCash.useSQL(0);
var dt = kit
.withSelect("t1", "select a from t")
.select("a")
.from("t1")
.top(1)
.query();With builder:
c#
var kit = DBCash.useSQL(0);
var dt = kit
.withSelect("t1", "select a from t")
.withSelect("t2", (t) => {
t.select("b").from("b")
.where("b.id=1");
})
.select("a")
.from("t1")
.top(1)
.query();SQLClip
Requires entities. Subqueries are mainly supported in conditions, e.g. whereIn:
c#
var clip = DBCash.useClip(0);
var tar = clip.from<HHDutyItem>(out var d)
.whereIn(() => d.Di_Name, (c) => {
return c.from<HHWordBag>(out var w)
.where(() => w.Wb_Code, "a")
.select(()=>w.Wb_Name);
})
.select(d)
.queryList();