mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-08 09:20:55 +08:00
update
30
嵌套查询.md
30
嵌套查询.md
@@ -18,7 +18,7 @@ fsql.Select<User1>()
|
||||
```sql
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT a.[CreateTime], a.[UpdateTime], a.[IsDeleted], a.[Sort], a.[Id], a.[GroupId], a.[Username], a.[Nickname], a.[Avatar], a.[Description], row_number() over( partition by a.[Nickname] order by a.[Id]) [rownum]
|
||||
SELECT a.[Id], a.[Username], a.[Nickname], row_number() over( partition by a.[Nickname] order by a.[Id]) [rownum]
|
||||
FROM [User1] a
|
||||
) a
|
||||
WHERE (a.[rownum] = 1)
|
||||
@@ -34,13 +34,29 @@ WHERE (a.[rownum] = 1)
|
||||
|
||||
## ToSql + WithSql
|
||||
|
||||
这是早期提供的嵌套查询方法
|
||||
|
||||
```csharp
|
||||
fsql.Select<Topic>()
|
||||
.WithSql("select * from Topic where clicks > @val", new { val = 10 })
|
||||
.Page(1, 10)
|
||||
.ToList()
|
||||
//SELECT a.`Id`, a.`Clicks`, a.`CategoryId`, a.`Title`, a.`CreateTime`
|
||||
//FROM (select * from Topic where clicks > @val) a
|
||||
var sql = fsql.Select<User1>()
|
||||
.ToSql(a => new
|
||||
{
|
||||
item = a,
|
||||
rownum = SqlExt.RowNumber().Over().PartitionBy(a.Nickname).OrderBy(a.Id).ToValue()
|
||||
}, FieldAliasOptions.AsProperty);
|
||||
|
||||
fsql.Select<User1>()
|
||||
.WithSql(sql)
|
||||
.Where("a.rownum = 1")
|
||||
.ToList();
|
||||
```
|
||||
|
||||
```sql
|
||||
SELECT a.[Id], a.[Username], a.[Nickname]
|
||||
FROM (
|
||||
SELECT a.[Id], a.[Username], a.[Nickname], row_number() over( partition by a.[Nickname] order by a.[Id]) [rownum]
|
||||
FROM [User1] a
|
||||
) a
|
||||
WHERE (a.rownum = 1)
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
|
||||
Reference in New Issue
Block a user