mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-09 18:00:56 +08:00
update
42
嵌套查询.md
42
嵌套查询.md
@@ -28,13 +28,47 @@ FROM (
|
||||
WHERE (a.[rownum] = 1)
|
||||
```
|
||||
|
||||
场景2:分组查询嵌套
|
||||
场景2:嵌套查询 + Join
|
||||
|
||||
WithTempQuery + From\<T2\> 或 FromQuery\<ISelect\<T2\>\> 可实现无限联表
|
||||
|
||||
```c#
|
||||
fsql.Select<User1>()
|
||||
.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<UserExt>() //普通联表
|
||||
.FromQuery(fsql.Select<UserExt>().Where(b => b.Id > 0)) //子查询联表
|
||||
//.FromQuery(fsql.Select<UserExt, UserGroup, xxx>().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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user