mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-18 20:08:15 +08:00
内部 SQL 格式优化
This commit is contained in:
@ -86,22 +86,22 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
|
||||
//SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name`
|
||||
//FROM `Tag` a
|
||||
//WHERE (exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
|
||||
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
|
||||
// limit 0,1))
|
||||
// FROM `Tag` t
|
||||
// LEFT JOIN `Tag` t__Parent ON t__Parent.`Id` = t.`Parent_id`
|
||||
// WHERE (t__Parent.`Id` = 10) AND (t.`Parent_id` = a.`Id`)
|
||||
// limit 0,1))
|
||||
|
||||
//ManyToMany
|
||||
var t2 = g.pgsql.Select<Song>().Where(s => s.Tags.AsSelect().Any(t => t.Name == "国语")).ToSql();
|
||||
//SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url`
|
||||
//FROM `Song` a
|
||||
//WHERE(exists(SELECT 1
|
||||
// FROM `Song_tag` Mt_Ms
|
||||
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
|
||||
// limit 0, 1))
|
||||
// limit 0, 1))
|
||||
// FROM `Song_tag` Mt_Ms
|
||||
// WHERE(Mt_Ms.`Song_id` = a.`Id`) AND(exists(SELECT 1
|
||||
// FROM `Tag` t
|
||||
// WHERE(t.`Name` = '国语') AND(t.`Id` = Mt_Ms.`Tag_id`)
|
||||
// limit 0, 1))
|
||||
// limit 0, 1))
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -189,9 +189,9 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
|
||||
//);
|
||||
|
||||
//var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((a, b, c) => new SelectFrom()
|
||||
// .InnerJoin(a.TypeGuid == b.Guid)
|
||||
// .LeftJoin(c.Id == b.ParentId)
|
||||
// .Where(b.Name == "xxx"))
|
||||
// .InnerJoin(a.TypeGuid == b.Guid)
|
||||
// .LeftJoin(c.Id == b.ParentId)
|
||||
// .Where(b.Name == "xxx"))
|
||||
//.Where(a => a.Id == 1).ToSql();
|
||||
|
||||
var sql4 = select.From<TestTypeInfo, TestTypeParentInfo>((s, b, c) => s
|
||||
@ -916,8 +916,8 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
|
||||
count = (long)select.As("b").Sum(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT sum(b.""id"")
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -934,8 +934,8 @@ FROM ""tb_topic"" a", subquery);
|
||||
count = select.As("b").Min(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT min(b.""id"")
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -952,8 +952,8 @@ FROM ""tb_topic"" a", subquery);
|
||||
count = select.As("b").Max(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT max(b.""id"")
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -970,8 +970,8 @@ FROM ""tb_topic"" a", subquery);
|
||||
count = select.As("b").Avg(b => b.Id)
|
||||
});
|
||||
Assert.Equal(@"SELECT a.""id"" as1, a.""clicks"" as2, a.""typeguid"" as3, a.""title"" as4, a.""createtime"" as5, (SELECT avg(b.""id"")
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" b
|
||||
limit 1) as6
|
||||
FROM ""tb_topic"" a", subquery);
|
||||
var subqueryList = select.ToList(a => new
|
||||
{
|
||||
@ -986,7 +986,7 @@ FROM ""tb_topic"" a", subquery);
|
||||
Assert.Equal(@"SELECT a.""id"", a.""clicks"", a.""typeguid"", a.""title"", a.""createtime""
|
||||
FROM ""tb_topic"" a
|
||||
WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
FROM ""tb_topic"" b)))", subquery);
|
||||
FROM ""tb_topic"" b)))", subquery);
|
||||
var subqueryList = select.Where(a => select.As("b").ToList(b => b.Title).Contains(a.Id.ToString())).ToList();
|
||||
}
|
||||
[Fact]
|
||||
@ -1064,12 +1064,12 @@ WHERE ((((a.""id"")::text) in (SELECT b.""title""
|
||||
|
||||
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
|
||||
sql = query.ToSql().Replace("\r\n", "");
|
||||
Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
|
||||
Assert.Equal("SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT a.\"id\", a.\"clicks\", a.\"typeguid\", a.\"title\", a.\"createtime\" FROM \"tb_topic\" a) ftb", sql);
|
||||
query.ToList();
|
||||
|
||||
query = select.AsTable((_, old) => old).AsTable((_, old) => old);
|
||||
sql = query.ToSql("count(1) as1").Replace("\r\n", "");
|
||||
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALLSELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
|
||||
Assert.Equal("SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb UNION ALL SELECT * from (SELECT count(1) as1 FROM \"tb_topic\" a) ftb", sql);
|
||||
query.Count();
|
||||
|
||||
select.AsTable((_, old) => old).AsTable((_, old) => old).Max(a => a.Id);
|
||||
|
Reference in New Issue
Block a user