Update union all

This commit is contained in:
sunkaixuan
2022-03-26 22:34:19 +08:00
parent d372daa794
commit a167860507
3 changed files with 16 additions and 16 deletions

View File

@@ -331,7 +331,17 @@ namespace SqlSugar
} }
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray()); return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());
} }
public virtual string GetUnionFomatSql(string sql)
{
if (this.Context.CurrentConnectionConfig.DbType.IsIn(DbType.MySql, DbType.PostgreSQL,DbType.MySqlConnector))
{
return $" ( {sql} ) ";
}
else
{
return sql;
}
}
private void BuilderTree(StringBuilder builder,ConditionalTree item,ref int indexTree, List<SugarParameter> parameters,ref int mainIndex) private void BuilderTree(StringBuilder builder,ConditionalTree item,ref int indexTree, List<SugarParameter> parameters,ref int mainIndex)
{ {
var conditionals = ToConditionalCollections(item,ref indexTree, parameters); var conditionals = ToConditionalCollections(item,ref indexTree, parameters);

View File

@@ -520,9 +520,9 @@ namespace SqlSugar
string sql = sqlObj.Key; string sql = sqlObj.Key;
UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "UnionAll"); UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "UnionAll");
if (sqlObj.Value.HasValue()) if (sqlObj.Value.HasValue())
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(GetUnionFomatSql(sql), sqlObj.Value)); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sqlBuilder.GetUnionFomatSql(sql), sqlObj.Value));
else else
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(GetUnionFomatSql(sql), new List<SugarParameter>())); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sqlBuilder.GetUnionFomatSql(sql), new List<SugarParameter>()));
i++; i++;
} }
var allSql = sqlBuilder.GetUnionAllSql(allItems.Select(it => it.Key).ToList()); var allSql = sqlBuilder.GetUnionAllSql(allItems.Select(it => it.Key).ToList());
@@ -557,9 +557,9 @@ namespace SqlSugar
string sql = sqlObj.Key; string sql = sqlObj.Key;
UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union"); UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union");
if (sqlObj.Value.HasValue()) if (sqlObj.Value.HasValue())
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(GetUnionFomatSql(sql), sqlObj.Value)); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sqlBuilder.GetUnionFomatSql(sql), sqlObj.Value));
else else
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(GetUnionFomatSql(sql), new List<SugarParameter>())); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sqlBuilder.GetUnionFomatSql(sql), new List<SugarParameter>()));
i++; i++;
} }
var allSql = sqlBuilder.GetUnionSql(allItems.Select(it => it.Key).ToList()); var allSql = sqlBuilder.GetUnionSql(allItems.Select(it => it.Key).ToList());
@@ -580,17 +580,6 @@ namespace SqlSugar
Check.Exception(queryables.IsNullOrEmpty(), "Union.queryables is null "); Check.Exception(queryables.IsNullOrEmpty(), "Union.queryables is null ");
return Union(queryables.ToArray()); return Union(queryables.ToArray());
} }
private string GetUnionFomatSql(string sql)
{
if (this.CurrentConnectionConfig.DbType == DbType.Access)
{
return sql;
}
else
{
return $" ( {sql} ) ";
}
}
#endregion #endregion
#region SqlQueryable #region SqlQueryable

View File

@@ -41,5 +41,6 @@ namespace SqlSugar
string GetUnionSql(List<string> sqlList); string GetUnionSql(List<string> sqlList);
void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex); void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex);
KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<IConditionalModel> models, int beginIndex = 0); KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<IConditionalModel> models, int beginIndex = 0);
string GetUnionFomatSql(string sql);
} }
} }