- 修复 子查询 Count/Max/Min/Avg/Sum 使用了 Limit(1) 的 bug;#462

This commit is contained in:
28810
2020-09-16 13:54:04 +08:00
parent b83efc1c6b
commit fd8ed29c02
18 changed files with 76 additions and 118 deletions

View File

@ -855,8 +855,7 @@ namespace FreeSql.Tests.Odbc.Dameng
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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -873,8 +872,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -891,8 +889,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -909,8 +906,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -829,7 +829,7 @@ namespace FreeSql.Tests.Odbc.Default
all = a,
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 TOP 1 sum(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -846,7 +846,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 min(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -863,7 +863,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 max(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -880,7 +880,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 avg(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new

View File

@ -820,8 +820,7 @@ namespace FreeSql.Tests.Odbc.KingbaseES
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_TOPIC22"" b
limit 1) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -838,8 +837,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
limit 1) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -856,8 +854,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
limit 1) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -874,8 +871,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
limit 1) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -940,8 +940,7 @@ namespace FreeSql.Tests.Odbc.MySql
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 0,1) as6
FROM `tb_topic` b) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -958,8 +957,7 @@ 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 0,1) as6
FROM `tb_topic` b) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -976,8 +974,7 @@ 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 0,1) as6
FROM `tb_topic` b) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{
@ -994,8 +991,7 @@ 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 0,1) as6
FROM `tb_topic` b) as6
FROM `tb_topic` a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -856,8 +856,7 @@ namespace FreeSql.Tests.Odbc.Oracle
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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -874,8 +873,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -892,8 +890,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -910,8 +907,7 @@ FROM ""TB_TOPIC22"" 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_TOPIC22"" b
WHERE ROWNUM < 2) as6
FROM ""TB_TOPIC22"" b) as6
FROM ""TB_TOPIC22"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -916,8 +916,7 @@ 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) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -934,8 +933,7 @@ 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) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -952,8 +950,7 @@ 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) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{
@ -970,8 +967,7 @@ 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) as6
FROM ""tb_topic"" a", subquery);
var subqueryList = select.ToList(a => new
{

View File

@ -810,7 +810,7 @@ namespace FreeSql.Tests.Odbc.SqlServer
all = a,
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 TOP 1 sum(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -827,7 +827,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 min(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -844,7 +844,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 max(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new
@ -861,7 +861,7 @@ FROM [tb_topic22] a", subquery);
all = a,
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 TOP 1 avg(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_topic22] b) as6
FROM [tb_topic22] a", subquery);
var subqueryList = select.ToList(a => new