diff --git a/嵌套查询.md b/嵌套查询.md index f9c5382..a88f2ab 100644 --- a/嵌套查询.md +++ b/嵌套查询.md @@ -28,13 +28,47 @@ FROM ( WHERE (a.[rownum] = 1) ``` -场景2:分组查询嵌套 +场景2:嵌套查询 + Join + +WithTempQuery + From\ 或 FromQuery\\> 可实现无限联表 + +```c# +fsql.Select() + .Where(a => a.Id < 1000) + .WithTempQuery(a => new + { + item = a, + rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue() + }) + .Where(a => a.rownum == 1) + //.From() //普通联表 + .FromQuery(fsql.Select().Where(b => b.Id > 0)) //子查询联表 + //.FromQuery(fsql.Select().WithTempQuery((a,b,c) => new { ... })) //子多表查询联表 + .InnerJoin((a, b) => a.item.Id == b.UserId) + .ToList((a, b) => new + { + user = a.item, + rownum = a.rownum, + userext = b + }); +``` + +```sql +SELECT ... +FROM ( + SELECT a.[Id], a.[Nickname], row_number() over( partition by a.[Nickname] order by a.[Id]) [rownum] + FROM [User1] a ) a +INNER JOIN (SELECT a.[UserId], a.[Remark] + FROM [TwoTablePartitionBy_UserExt] a + WHERE (a.[UserId] > 0)) b ON a.[Id] = b.[UserId] +WHERE (a.[rownum] = 1) +``` + +场景3:分组查询嵌套 待补充.. -场景3:嵌套查询 + Join - -待补充.. +--- ## 子表Exists