From ef15f261a295f6e43228f439adfadf98545b4bea Mon Sep 17 00:00:00 2001
From: Smit Patel <smitpatel@users.noreply.github.com>
Date: Wed, 17 Feb 2016 15:48:04 -0800
Subject: [PATCH] Generate Unique alias for table names

---
 .../Internal/IncludeExpressionVisitor.cs      |  13 +-
 ...ationalEntityQueryableExpressionVisitor.cs |   2 +-
 .../Expressions/ISelectExpressionFactory.cs   |   4 +-
 .../Query/Expressions/SelectExpression.cs     |  82 ++-
 .../Expressions/SelectExpressionFactory.cs    |   7 +-
 .../RelationalResultOperatorHandler.cs        |  13 +-
 .../RelationalQueryCompilationContext.cs      |  37 ++
 .../NavigationRewritingExpressionVisitor.cs   |   2 +-
 .../ComplexNavigationsQueryTestBase.cs        |  37 ++
 .../GearsOfWarQueryTestBase.cs                |  92 ++--
 .../IncludeTestBase.cs                        |   2 +-
 .../ComplexNavigationsQuerySqlServerTest.cs   | 182 ++++---
 .../FromSqlQuerySqlServerTest.cs              |   8 +-
 .../GearsOfWarQuerySqlServerTest.cs           | 257 +++++----
 .../IncludeSqlServerTest.cs                   | 510 +++++++++---------
 ...eritanceRelationshipsQuerySqlServerTest.cs | 126 ++---
 .../InheritanceSqlServerTest.cs               |  78 +--
 .../QueryBugsTest.cs                          |   8 +-
 .../QueryLoggingSqlServerTest.cs              |   8 +-
 .../QueryNavigationsSqlServerTest.cs          |  70 +--
 .../QuerySqlServerTest.cs                     | 317 ++++++-----
 .../RowNumberPagingTest.cs                    |  78 +--
 .../ComplexNavigationsQuerySqliteTest.cs      |  56 +-
 .../QuerySqliteTest.cs                        |   6 +-
 24 files changed, 1069 insertions(+), 926 deletions(-)

diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/Internal/IncludeExpressionVisitor.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/Internal/IncludeExpressionVisitor.cs
index df7adf4de69..52628219209 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/Internal/IncludeExpressionVisitor.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/Internal/IncludeExpressionVisitor.cs
@@ -135,7 +135,7 @@ var targetTableExpression
 
                 var targetEntityType = navigation.GetTargetType();
                 var targetTableName = _relationalAnnotationProvider.For(targetEntityType).TableName;
-                var targetTableAlias = targetTableName[0].ToString().ToLower();
+                var targetTableAlias = _queryCompilationContext.CreateUniqueTableAlias(targetTableName[0].ToString().ToLower());
 
                 if (!navigation.IsCollection())
                 {
@@ -179,7 +179,7 @@ var materializer
 
                         selectExpression.Predicate = oldPredicate;
                         selectExpression.RemoveTable(joinExpression);
-                        selectExpression.AddTable(newJoinExpression);
+                        selectExpression.AddTable(newJoinExpression, createUniqueAlias: false);
                         joinExpression = newJoinExpression;
                     }
 
@@ -223,7 +223,7 @@ var principalTable
                                 OrderingDirection.Asc);
                     }
 
-                    var targetSelectExpression = _selectExpressionFactory.Create();
+                    var targetSelectExpression = _selectExpressionFactory.Create(_queryCompilationContext);
 
                     targetTableExpression
                         = new TableExpression(
@@ -232,7 +232,7 @@ var principalTable
                             targetTableAlias,
                             querySource);
 
-                    targetSelectExpression.AddTable(targetTableExpression);
+                    targetSelectExpression.AddTable(targetTableExpression, createUniqueAlias: false);
 
                     var materializer
                         = _materializerFactory
@@ -290,8 +290,9 @@ var innerJoinSelectExpression
         private JoinExpressionBase AdjustJoinExpression(
             SelectExpression selectExpression, JoinExpressionBase joinExpression)
         {
-            var subquery = new SelectExpression(_querySqlGeneratorFactory, joinExpression.Alias);
-            subquery.AddTable(joinExpression.TableExpression);
+            var subquery = new SelectExpression(_querySqlGeneratorFactory, _queryCompilationContext) { Alias = joinExpression.Alias };
+            // Don't create new alias when adding tables to subquery
+            subquery.AddTable(joinExpression.TableExpression, createUniqueAlias: false);
             subquery.IsProjectStar = true;
             subquery.Predicate = selectExpression.Predicate;
 
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/RelationalEntityQueryableExpressionVisitor.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/RelationalEntityQueryableExpressionVisitor.cs
index 99aa116f237..28e88635126 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/RelationalEntityQueryableExpressionVisitor.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/ExpressionVisitors/RelationalEntityQueryableExpressionVisitor.cs
@@ -117,7 +117,7 @@ protected override Expression VisitEntityQueryable(Type elementType)
             var relationalQueryCompilationContext = QueryModelVisitor.QueryCompilationContext;
             var entityType = _model.FindEntityType(elementType);
 
-            var selectExpression = _selectExpressionFactory.Create();
+            var selectExpression = _selectExpressionFactory.Create(relationalQueryCompilationContext);
 
             QueryModelVisitor.AddQuery(_querySource, selectExpression);
 
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/ISelectExpressionFactory.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/ISelectExpressionFactory.cs
index 0cecedce11e..82e10e17de5 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/ISelectExpressionFactory.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/ISelectExpressionFactory.cs
@@ -7,8 +7,8 @@ namespace Microsoft.EntityFrameworkCore.Query.Expressions
 {
     public interface ISelectExpressionFactory
     {
-        SelectExpression Create();
+        SelectExpression Create([NotNull]RelationalQueryCompilationContext queryCompilationContext);
 
-        SelectExpression Create([NotNull] string alias);
+        SelectExpression Create([NotNull]RelationalQueryCompilationContext queryCompilationContext, [NotNull] string alias);
     }
 }
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpression.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpression.cs
index 4c0837d8dbc..47bfda45b69 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpression.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpression.cs
@@ -22,6 +22,7 @@ public class SelectExpression : TableExpressionBase
 #endif
 
         private readonly IQuerySqlGeneratorFactory _querySqlGeneratorFactory;
+        private readonly RelationalQueryCompilationContext _queryCompilationContext;
         private readonly List<Expression> _projection = new List<Expression>();
         private readonly List<TableExpressionBase> _tables = new List<TableExpressionBase>();
         private readonly List<Ordering> _orderBy = new List<Ordering>();
@@ -35,22 +36,27 @@ public class SelectExpression : TableExpressionBase
 
         public virtual Expression Predicate { get; [param: CanBeNull] set; }
 
-        public SelectExpression([NotNull] IQuerySqlGeneratorFactory querySqlGeneratorFactory)
+        public SelectExpression([NotNull] IQuerySqlGeneratorFactory querySqlGeneratorFactory,
+            [NotNull] RelationalQueryCompilationContext queryCompilationContext)
             : base(null, null)
         {
             Check.NotNull(querySqlGeneratorFactory, nameof(querySqlGeneratorFactory));
+            Check.NotNull(queryCompilationContext, nameof(queryCompilationContext));
 
             _querySqlGeneratorFactory = querySqlGeneratorFactory;
+            _queryCompilationContext = queryCompilationContext;
         }
 
         public SelectExpression(
             [NotNull] IQuerySqlGeneratorFactory querySqlGeneratorFactory,
+            [NotNull] RelationalQueryCompilationContext queryCompilationContext,
             [NotNull] string alias)
-            : base(null, Check.NotNull(alias, nameof(alias)))
+            : this(querySqlGeneratorFactory, queryCompilationContext)
         {
-            Check.NotNull(querySqlGeneratorFactory, nameof(querySqlGeneratorFactory));
+            Check.NotNull(alias, nameof(alias));
 
-            _querySqlGeneratorFactory = querySqlGeneratorFactory;
+            // When assigning alias to select expression make it unique
+            Alias = queryCompilationContext.CreateUniqueTableAlias(alias);
         }
 
         public override Type Type => _projection.Count == 1
@@ -62,7 +68,7 @@ public virtual SelectExpression Clone([NotNull] string alias)
             Check.NotNull(alias, nameof(alias));
 
             var selectExpression
-                = new SelectExpression(_querySqlGeneratorFactory, alias)
+                = new SelectExpression(_querySqlGeneratorFactory, _queryCompilationContext, alias)
                 {
                     _limit = _limit,
                     _offset = _offset,
@@ -84,13 +90,32 @@ var selectExpression
 
         public virtual bool IsProjectStar { get; set; }
 
-        public virtual void AddTable([NotNull] TableExpressionBase tableExpression)
-            => _tables.Add(Check.NotNull(tableExpression, nameof(tableExpression)));
+        public virtual void AddTable([NotNull] TableExpressionBase tableExpression, bool createUniqueAlias = true)
+        {
+            Check.NotNull(tableExpression, nameof(tableExpression));
+
+            if (createUniqueAlias)
+            {
+                tableExpression.Alias = _queryCompilationContext.CreateUniqueTableAlias(tableExpression.Alias);
+            }
+            _tables.Add(tableExpression);
+        }
 
         public virtual void AddTables([NotNull] IEnumerable<TableExpressionBase> tableExpressions)
-            => _tables.AddRange(Check.NotNull(tableExpressions, nameof(tableExpressions)));
+        {
+            Check.NotNull(tableExpressions, nameof(tableExpressions));
 
-        public virtual void ClearTables() => _tables.Clear();
+            // Multiple tables are added while moving current select expression inside subquery hence it does not need to generate unique alias
+            foreach (var tableExpression in tableExpressions.ToList())
+            {
+                AddTable(tableExpression, createUniqueAlias: false);
+            }
+        }
+
+        public virtual void ClearTables()
+        {
+            _tables.Clear();
+        }
 
         public virtual bool IsCorrelated() => new CorrelationFindingExpressionVisitor().IsCorrelated(this);
 
@@ -229,7 +254,7 @@ public virtual SelectExpression PushDownSubquery()
         {
             _subqueryDepth++;
 
-            var subquery = new SelectExpression(_querySqlGeneratorFactory, SystemAliasPrefix + _subqueryDepth);
+            var subquery = new SelectExpression(_querySqlGeneratorFactory, _queryCompilationContext, SystemAliasPrefix);
 
             var columnAliasCounter = 0;
 
@@ -277,7 +302,7 @@ public virtual SelectExpression PushDownSubquery()
             ClearProjection();
             ClearOrderBy();
 
-            AddTable(subquery);
+            AddTable(subquery, createUniqueAlias: false);
 
             return subquery;
         }
@@ -382,7 +407,7 @@ var projectionIndex
 
                 if (alias != null)
                 {
-                    foreach (var orderByAliasExpression 
+                    foreach (var orderByAliasExpression
                         in _orderBy.Select(o => o.Expression).OfType<AliasExpression>())
                     {
                         if (orderByAliasExpression.TryGetColumnExpression() == null)
@@ -625,8 +650,6 @@ public virtual void AddCrossJoin(
             Check.NotNull(tableExpression, nameof(tableExpression));
             Check.NotNull(projection, nameof(projection));
 
-            tableExpression.Alias = CreateUniqueTableAlias(tableExpression.Alias);
-
             _tables.Add(new CrossJoinExpression(tableExpression));
             _projection.AddRange(projection);
         }
@@ -638,8 +661,6 @@ public virtual void AddLateralJoin(
             Check.NotNull(tableExpression, nameof(tableExpression));
             Check.NotNull(projection, nameof(projection));
 
-            tableExpression.Alias = CreateUniqueTableAlias(tableExpression.Alias);
-
             _tables.Add(new LateralJoinExpression(tableExpression));
             _projection.AddRange(projection);
         }
@@ -658,8 +679,6 @@ public virtual JoinExpressionBase AddInnerJoin(
             Check.NotNull(tableExpression, nameof(tableExpression));
             Check.NotNull(projection, nameof(projection));
 
-            tableExpression.Alias = CreateUniqueTableAlias(tableExpression.Alias);
-
             var innerJoinExpression = new InnerJoinExpression(tableExpression);
 
             _tables.Add(innerJoinExpression);
@@ -682,8 +701,6 @@ public virtual JoinExpressionBase AddOuterJoin(
             Check.NotNull(tableExpression, nameof(tableExpression));
             Check.NotNull(projection, nameof(projection));
 
-            tableExpression.Alias = CreateUniqueTableAlias(tableExpression.Alias);
-
             var outerJoinExpression = new LeftOuterJoinExpression(tableExpression);
 
             _tables.Add(outerJoinExpression);
@@ -692,31 +709,6 @@ public virtual JoinExpressionBase AddOuterJoin(
             return outerJoinExpression;
         }
 
-        public virtual string CreateUniqueTableAlias()
-            => CreateUniqueTableAlias(SystemAliasPrefix);
-
-        private string CreateUniqueTableAlias(string currentAlias)
-        {
-            Debug.Assert(currentAlias != null);
-
-            var uniqueAlias = currentAlias;
-            var counter = 0;
-
-            int _;
-            if (currentAlias.StartsWith(SystemAliasPrefix, StringComparison.Ordinal)
-                && int.TryParse(currentAlias.Substring(1), out _))
-            {
-                currentAlias = SystemAliasPrefix;
-            }
-
-            while (_tables.Any(t => string.Equals(t.Alias, uniqueAlias, StringComparison.OrdinalIgnoreCase)))
-            {
-                uniqueAlias = currentAlias + counter++;
-            }
-
-            return uniqueAlias;
-        }
-
         private string CreateUniqueProjectionAlias(string currentAlias)
         {
             var uniqueAlias = currentAlias ?? "A";
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpressionFactory.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpressionFactory.cs
index 9647bccaa19..68af7604f13 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpressionFactory.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/Expressions/SelectExpressionFactory.cs
@@ -18,12 +18,13 @@ public SelectExpressionFactory([NotNull] IQuerySqlGeneratorFactory querySqlGener
             _querySqlGeneratorFactory = querySqlGeneratorFactory;
         }
 
-        public virtual SelectExpression Create()
-            => new SelectExpression(_querySqlGeneratorFactory);
+        public virtual SelectExpression Create(RelationalQueryCompilationContext queryCompilationContext)
+            => new SelectExpression(_querySqlGeneratorFactory, queryCompilationContext);
 
-        public virtual SelectExpression Create(string alias)
+        public virtual SelectExpression Create(RelationalQueryCompilationContext queryCompilationContext, string alias)
             => new SelectExpression(
                 _querySqlGeneratorFactory,
+                queryCompilationContext,
                 Check.NotEmpty(alias, nameof(alias)));
     }
 }
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/Internal/RelationalResultOperatorHandler.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/Internal/RelationalResultOperatorHandler.cs
index 007cf0de87b..fa35c4336f0 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/Internal/RelationalResultOperatorHandler.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/Internal/RelationalResultOperatorHandler.cs
@@ -165,7 +165,8 @@ var predicate
 
             if (predicate != null)
             {
-                var innerSelectExpression = handlerContext.SelectExpressionFactory.Create();
+                var innerSelectExpression
+                    = handlerContext.SelectExpressionFactory.Create(handlerContext.QueryModelVisitor.QueryCompilationContext);
 
                 innerSelectExpression.AddTables(handlerContext.SelectExpression.Tables);
                 innerSelectExpression.Predicate = Expression.Not(predicate);
@@ -194,7 +195,7 @@ var predicate
 
         private static Expression HandleAny(HandlerContext handlerContext)
         {
-            var innerSelectExpression = handlerContext.SelectExpressionFactory.Create();
+            var innerSelectExpression = handlerContext.SelectExpressionFactory.Create(handlerContext.QueryModelVisitor.QueryCompilationContext);
 
             innerSelectExpression.AddTables(handlerContext.SelectExpression.Tables);
             innerSelectExpression.Predicate = handlerContext.SelectExpression.Predicate;
@@ -235,14 +236,14 @@ var filteringVisitor
 
                     if (entityType != null)
                     {
-                        var outterSelectExpression = handlerContext.SelectExpressionFactory.Create();
+                        var outterSelectExpression = handlerContext.SelectExpressionFactory.Create(handlerContext.QueryModelVisitor.QueryCompilationContext);
                         outterSelectExpression.SetProjectionExpression(Expression.Constant(1));
 
                         var collectionSelectExpression
-                            = handlerContext.SelectExpression.Clone(outterSelectExpression.CreateUniqueTableAlias());
+                            = handlerContext.SelectExpression.Clone(handlerContext.QueryModelVisitor.QueryCompilationContext.CreateUniqueTableAlias());
                         outterSelectExpression.AddTable(collectionSelectExpression);
 
-                        itemSelectExpression.Alias = outterSelectExpression.CreateUniqueTableAlias();
+                        itemSelectExpression.Alias = handlerContext.QueryModelVisitor.QueryCompilationContext.CreateUniqueTableAlias();
                         var joinExpression = outterSelectExpression.AddInnerJoin(itemSelectExpression);
 
                         foreach (var property in entityType.FindPrimaryKey().Properties)
@@ -333,7 +334,7 @@ private static Expression HandleDefaultIfEmpty(HandlerContext handlerContext)
 
             selectExpression.ClearTables();
 
-            var emptySelectExpression = handlerContext.SelectExpressionFactory.Create("empty");
+            var emptySelectExpression = handlerContext.SelectExpressionFactory.Create(handlerContext.QueryModelVisitor.QueryCompilationContext, "empty");
             emptySelectExpression.AddToProjection(new AliasExpression("empty", Expression.Constant(null)));
 
             selectExpression.AddTable(emptySelectExpression);
diff --git a/src/Microsoft.EntityFrameworkCore.Relational/Query/RelationalQueryCompilationContext.cs b/src/Microsoft.EntityFrameworkCore.Relational/Query/RelationalQueryCompilationContext.cs
index 3e5fbf7a68c..2c2cd2972a6 100644
--- a/src/Microsoft.EntityFrameworkCore.Relational/Query/RelationalQueryCompilationContext.cs
+++ b/src/Microsoft.EntityFrameworkCore.Relational/Query/RelationalQueryCompilationContext.cs
@@ -3,7 +3,9 @@
 
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Linq;
+using System.Text.RegularExpressions;
 using JetBrains.Annotations;
 using Microsoft.EntityFrameworkCore.Infrastructure;
 using Microsoft.EntityFrameworkCore.Metadata;
@@ -20,6 +22,10 @@ public class RelationalQueryCompilationContext : QueryCompilationContext
         private readonly List<RelationalQueryModelVisitor> _relationalQueryModelVisitors
             = new List<RelationalQueryModelVisitor>();
 
+        private const string SystemAliasPrefix = "t";
+        private readonly IDictionary<string, int> _tableAliasCounterMap = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
+        private readonly ISet<string> _tableAliasSet = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
+
         public RelationalQueryCompilationContext(
             [NotNull] IModel model,
             [NotNull] ISensitiveDataLogger logger,
@@ -78,5 +84,36 @@ public virtual SelectExpression FindSelectExpression([NotNull] IQuerySource quer
                  select selectExpression)
                     .First();
         }
+
+        public virtual string CreateUniqueTableAlias()
+            => CreateUniqueTableAlias(SystemAliasPrefix);
+
+        public virtual string CreateUniqueTableAlias([NotNull] string currentAlias)
+        {
+            Check.NotNull(currentAlias, nameof(currentAlias));
+
+            if (currentAlias.Length == 0)
+            {
+                return currentAlias;
+            }
+
+            var counter = 0;
+            var uniqueAlias = currentAlias;
+
+            if (_tableAliasCounterMap.ContainsKey(currentAlias))
+            {
+                counter = _tableAliasCounterMap[currentAlias];
+                uniqueAlias += counter;
+            }
+
+            while (_tableAliasSet.Contains(uniqueAlias))
+            {
+                uniqueAlias = currentAlias + counter++;
+            }
+            _tableAliasCounterMap[currentAlias] = counter;
+
+            _tableAliasSet.Add(uniqueAlias);
+            return uniqueAlias;
+        }
     }
 }
diff --git a/src/Microsoft.EntityFrameworkCore/Query/ExpressionVisitors/Internal/NavigationRewritingExpressionVisitor.cs b/src/Microsoft.EntityFrameworkCore/Query/ExpressionVisitors/Internal/NavigationRewritingExpressionVisitor.cs
index c30a757ecd9..5d3d5b34560 100644
--- a/src/Microsoft.EntityFrameworkCore/Query/ExpressionVisitors/Internal/NavigationRewritingExpressionVisitor.cs
+++ b/src/Microsoft.EntityFrameworkCore/Query/ExpressionVisitors/Internal/NavigationRewritingExpressionVisitor.cs
@@ -324,7 +324,7 @@ private Expression CreateSubqueryForNavigations(
 
             var mainFromClause
                 = new MainFromClause(
-                    _queryModel.GetNewName("subQuery"),
+                    "subQuery",
                     targetEntityType.ClrType, CreateEntityQueryable(targetEntityType));
 
             var querySourceReference = new QuerySourceReferenceExpression(mainFromClause);
diff --git a/test/Microsoft.EntityFrameworkCore.FunctionalTests/ComplexNavigationsQueryTestBase.cs b/test/Microsoft.EntityFrameworkCore.FunctionalTests/ComplexNavigationsQueryTestBase.cs
index 33810274170..1045d60bafe 100644
--- a/test/Microsoft.EntityFrameworkCore.FunctionalTests/ComplexNavigationsQueryTestBase.cs
+++ b/test/Microsoft.EntityFrameworkCore.FunctionalTests/ComplexNavigationsQueryTestBase.cs
@@ -459,6 +459,43 @@ join e1 in levelOnes on e2.Id equals e1.OneToOne_Optional_FK?.Id
             }
         }
 
+        [ConditionalFact]
+        public virtual void Join_navigations_in_inner_selector_translated_to_multiple_subquery_without_collision()
+        {
+            List<Level1> levelOnes;
+            List<Level2> levelTwos;
+            List<Level3> levelThrees;
+            using (var context = CreateContext())
+            {
+                levelOnes = context.LevelOne.Include(e => e.OneToOne_Optional_FK).ToList();
+                levelTwos = context.LevelTwo.ToList();
+                levelThrees = context.LevelThree.Include(e => e.OneToOne_Optional_FK_Inverse).ToList();
+            }
+
+            ClearLog();
+
+            using (var context = CreateContext())
+            {
+                var query = from e2 in context.LevelTwo
+                            join e1 in context.LevelOne on e2.Id equals e1.OneToOne_Optional_FK.Id
+                            join e3 in context.LevelThree on e2.Id equals e3.OneToOne_Optional_FK_Inverse.Id
+                            select new { Id2 = e2.Id, Id1 = e1.Id, Id3 = e3.Id };
+
+                var result = query.ToList();
+
+                var expected = (from e2 in levelTwos
+                                join e1 in levelOnes on e2.Id equals e1.OneToOne_Optional_FK?.Id
+                                join e3 in levelThrees on e2.Id equals e3.OneToOne_Optional_FK_Inverse?.Id
+                                select new { Id2 = e2.Id, Id1 = e1.Id, Id3 = e3.Id }).ToList();
+
+                Assert.Equal(expected.Count, result.Count);
+                foreach (var resultItem in result)
+                {
+                    Assert.True(expected.Contains(resultItem));
+                }
+            }
+        }
+
         [ConditionalFact]
         public virtual void Join_navigation_translated_to_subquery_non_key_join()
         {
diff --git a/test/Microsoft.EntityFrameworkCore.FunctionalTests/GearsOfWarQueryTestBase.cs b/test/Microsoft.EntityFrameworkCore.FunctionalTests/GearsOfWarQueryTestBase.cs
index 6d49abc887a..c5e412cb292 100644
--- a/test/Microsoft.EntityFrameworkCore.FunctionalTests/GearsOfWarQueryTestBase.cs
+++ b/test/Microsoft.EntityFrameworkCore.FunctionalTests/GearsOfWarQueryTestBase.cs
@@ -502,6 +502,30 @@ public virtual void Where_nullable_enum_with_nullable_parameter()
             }
         }
 
+        [ConditionalFact]
+        public virtual void Where_count_subquery_without_collision()
+        {
+            using (var context = CreateContext())
+            {
+                var query = context.Gears.Where(w => w.Weapons.Count == 2);
+                var result = query.ToList();
+
+                Assert.Equal(4, result.Count);
+            }
+        }
+
+        [ConditionalFact]
+        public virtual void Where_any_subquery_without_collision()
+        {
+            using (var context = CreateContext())
+            {
+                var query = context.Gears.Where(w => w.Weapons.Any());
+                var result = query.ToList();
+
+                Assert.Equal(5, result.Count);
+            }
+        }
+
         [ConditionalFact]
         public virtual void Select_inverted_boolean()
         {
@@ -548,7 +572,7 @@ public virtual void Select_ternary_operation_with_boolean()
             using (var context = CreateContext())
             {
                 var weapons = context.Weapons
-                    .Select(w => new { w.Id, Num = w.IsAutomatic ? 1 : 0})
+                    .Select(w => new { w.Id, Num = w.IsAutomatic ? 1 : 0 })
                     .ToList();
 
                 Assert.Equal(3, weapons.Count(w => w.Num == 1));
@@ -575,7 +599,7 @@ public virtual void Select_ternary_operation_with_has_value_not_null()
             {
                 var cartridgeWeapons = context.Weapons
                     .Where(w => w.AmmunitionType.HasValue && w.AmmunitionType == AmmunitionType.Cartridge)
-                    .Select(w => new { w.Id, IsCartidge = w.AmmunitionType.HasValue && w.AmmunitionType.Value == AmmunitionType.Cartridge ? "Yes" : "No"})
+                    .Select(w => new { w.Id, IsCartidge = w.AmmunitionType.HasValue && w.AmmunitionType.Value == AmmunitionType.Cartridge ? "Yes" : "No" })
                     .ToList();
 
                 Assert.All(cartridgeWeapons,
@@ -592,7 +616,7 @@ public virtual void Select_ternary_operation_multiple_conditions()
                     .Select(w => new { w.Id, IsCartidge = w.AmmunitionType == AmmunitionType.Shell && w.SynergyWithId == 1 ? "Yes" : "No" })
                     .ToList();
 
-                Assert.Equal(9 , cartridgeWeapons.Count(w => w.IsCartidge == "No"));
+                Assert.Equal(9, cartridgeWeapons.Count(w => w.IsCartidge == "No"));
             }
         }
 
@@ -615,7 +639,7 @@ public virtual void Select_multiple_conditions()
             using (var context = CreateContext())
             {
                 var cartridgeWeapons = context.Weapons
-                    .Select(w => new { w.Id, IsCartidge = !w.IsAutomatic && w.SynergyWithId == 1})
+                    .Select(w => new { w.Id, IsCartidge = !w.IsAutomatic && w.SynergyWithId == 1 })
                     .ToList();
 
                 Assert.Equal(9, cartridgeWeapons.Count(w => !w.IsCartidge));
@@ -642,8 +666,8 @@ public virtual void Select_Where_Navigation()
             {
                 var cogTags
                     = (from ct in context.Set<CogTag>()
-                        where ct.Gear.Nickname == "Marcus"
-                        select ct).ToList();
+                       where ct.Gear.Nickname == "Marcus"
+                       select ct).ToList();
 
                 Assert.Equal(1, cogTags.Count);
             }
@@ -656,9 +680,9 @@ public virtual void Select_Where_Navigation_Scalar_Equals_Navigation_Scalar()
             {
                 var cogTags
                     = (from ct1 in context.Set<CogTag>()
-                        from ct2 in context.Set<CogTag>()
-                        where ct1.Gear.Nickname == ct2.Gear.Nickname
-                        select new { ct1, ct2 }).ToList();
+                       from ct2 in context.Set<CogTag>()
+                       where ct1.Gear.Nickname == ct2.Gear.Nickname
+                       select new { ct1, ct2 }).ToList();
 
                 Assert.Equal(5, cogTags.Count);
             }
@@ -671,9 +695,9 @@ public virtual void Select_Where_Navigation_Scalar_Equals_Navigation_Scalar_Proj
             {
                 var cogTags
                     = (from ct1 in context.Set<CogTag>()
-                        from ct2 in context.Set<CogTag>()
-                        where ct1.Gear.Nickname == ct2.Gear.Nickname
-                        select new { ct1.Id, C2 = ct2.Id }).ToList();
+                       from ct2 in context.Set<CogTag>()
+                       where ct1.Gear.Nickname == ct2.Gear.Nickname
+                       select new { ct1.Id, C2 = ct2.Id }).ToList();
 
                 Assert.Equal(5, cogTags.Count);
             }
@@ -686,8 +710,8 @@ public virtual void Select_Where_Navigation_Client()
             {
                 var cogTags
                     = (from o in context.Set<CogTag>()
-                        where o.Gear.IsMarcus
-                        select o).ToList();
+                       where o.Gear.IsMarcus
+                       select o).ToList();
 
                 Assert.Equal(1, cogTags.Count);
             }
@@ -700,8 +724,8 @@ public virtual void Select_Where_Navigation_Null()
             {
                 var cogTags
                     = (from ct in context.Set<CogTag>()
-                        where ct.Gear == null
-                        select ct).ToList();
+                       where ct.Gear == null
+                       select ct).ToList();
 
                 Assert.Equal(1, cogTags.Count);
             }
@@ -714,8 +738,8 @@ public virtual void Select_Where_Navigation_Null_Reverse()
             {
                 var cogTags
                     = (from ct in context.Set<CogTag>()
-                        where null == ct.Gear
-                        select ct).ToList();
+                       where null == ct.Gear
+                       select ct).ToList();
 
                 Assert.Equal(1, cogTags.Count);
             }
@@ -728,9 +752,9 @@ public virtual void Select_Where_Navigation_Equals_Navigation()
             {
                 var cogTags
                     = (from ct1 in context.Set<CogTag>()
-                        from ct2 in context.Set<CogTag>()
-                        where ct1.Gear == ct2.Gear
-                        select new { ct1, ct2 }).ToList();
+                       from ct2 in context.Set<CogTag>()
+                       where ct1.Gear == ct2.Gear
+                       select new { ct1, ct2 }).ToList();
 
                 Assert.Equal(6, cogTags.Count);
             }
@@ -743,9 +767,9 @@ public virtual void Singleton_Navigation_With_Member_Access()
             {
                 var cogTags
                     = (from ct in context.Set<CogTag>()
-                        where ct.Gear.Nickname == "Marcus"
-                        where ct.Gear.CityOrBirthName != "Ephyra"
-                        select new { B = ct.Gear.CityOrBirthName }).ToList();
+                       where ct.Gear.Nickname == "Marcus"
+                       where ct.Gear.CityOrBirthName != "Ephyra"
+                       select new { B = ct.Gear.CityOrBirthName }).ToList();
 
                 Assert.Equal(1, cogTags.Count);
                 Assert.True(cogTags.All(o => o.B != null));
@@ -759,9 +783,9 @@ public virtual void Select_Singleton_Navigation_With_Member_Access()
             {
                 var cogTags
                     = (from ct in context.Set<CogTag>()
-                        where ct.Gear.Nickname == "Marcus"
-                        where ct.Gear.CityOrBirthName != "Ephyra"
-                        select new { A = ct.Gear, B = ct.Gear.CityOrBirthName }).ToList();
+                       where ct.Gear.Nickname == "Marcus"
+                       where ct.Gear.CityOrBirthName != "Ephyra"
+                       select new { A = ct.Gear, B = ct.Gear.CityOrBirthName }).ToList();
 
                 Assert.Equal(1, cogTags.Count);
                 Assert.True(cogTags.All(o => o.A != null && o.B != null));
@@ -775,11 +799,11 @@ public virtual void GroupJoin_Composite_Key()
             {
                 var gears
                     = (from ct in context.Set<CogTag>()
-                        join g in context.Set<Gear>()
-                            on new { N = ct.GearNickName, S = ct.GearSquadId }
-                            equals new { N = g.Nickname, S = (int?)g.SquadId } into gs
-                        from g in gs
-                        select g).ToList();
+                       join g in context.Set<Gear>()
+                           on new { N = ct.GearNickName, S = ct.GearSquadId }
+                           equals new { N = g.Nickname, S = (int?)g.SquadId } into gs
+                       from g in gs
+                       select g).ToList();
 
                 Assert.Equal(5, gears.Count);
             }
@@ -824,7 +848,7 @@ public virtual void Collection_with_inheritance_and_join_include_joined()
             using (var context = CreateContext())
             {
                 var query = (from t in context.Tags
-                             join g in context.Gears.OfType<Officer>() on new { id1 = t.GearSquadId, id2 = t.GearNickName } 
+                             join g in context.Gears.OfType<Officer>() on new { id1 = t.GearSquadId, id2 = t.GearNickName }
                                 equals new { id1 = (int?)g.SquadId, id2 = g.Nickname }
                              select g).Include(g => g.Tag);
 
@@ -840,7 +864,7 @@ public virtual void Collection_with_inheritance_and_join_include_source()
             using (var context = CreateContext())
             {
                 var query = (from g in context.Gears.OfType<Officer>()
-                             join t in context.Tags on new { id1 = (int?)g.SquadId, id2 = g.Nickname } 
+                             join t in context.Tags on new { id1 = (int?)g.SquadId, id2 = g.Nickname }
                                 equals new { id1 = t.GearSquadId, id2 = t.GearNickName }
                              select g).Include(g => g.Tag);
 
diff --git a/test/Microsoft.EntityFrameworkCore.FunctionalTests/IncludeTestBase.cs b/test/Microsoft.EntityFrameworkCore.FunctionalTests/IncludeTestBase.cs
index 44437e3ba20..5de7cf04458 100644
--- a/test/Microsoft.EntityFrameworkCore.FunctionalTests/IncludeTestBase.cs
+++ b/test/Microsoft.EntityFrameworkCore.FunctionalTests/IncludeTestBase.cs
@@ -1157,7 +1157,7 @@ public virtual void Include_with_complex_projection()
             }
         }
 
-		[Fact]
+        [Fact]
         public virtual void Include_with_take()
         {
             using (var context = CreateContext())
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/ComplexNavigationsQuerySqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/ComplexNavigationsQuerySqlServerTest.cs
index b68c78479ce..1ab9bf2728f 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/ComplexNavigationsQuerySqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/ComplexNavigationsQuerySqlServerTest.cs
@@ -30,20 +30,20 @@ FROM [Level2] AS [l]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [Level1] AS [e]
-) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
-ORDER BY [e].[Id], [l].[Id]
+) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
+ORDER BY [e0].[Id], [l].[Id]
 
-SELECT [l].[Id], [l].[Level2_Optional_Id], [l].[Level2_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
-FROM [Level3] AS [l]
+SELECT [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId]
+FROM [Level3] AS [l0]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+    SELECT DISTINCT [e0].[Id], [l].[Id] AS [Id0]
     FROM [Level2] AS [l]
     INNER JOIN (
         SELECT DISTINCT [e].[Id]
         FROM [Level1] AS [e]
-    ) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
-) AS [l0] ON [l].[OneToMany_Optional_InverseId] = [l0].[Id0]
-ORDER BY [l0].[Id], [l0].[Id0]", 
+    ) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
+) AS [l1] ON [l0].[OneToMany_Optional_InverseId] = [l1].[Id0]
+ORDER BY [l1].[Id], [l1].[Id0]",
                 Sql);
         }
 
@@ -61,38 +61,38 @@ FROM [Level2] AS [l]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [Level1] AS [e]
-) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
-ORDER BY [e].[Id], [l].[Id]
+) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
+ORDER BY [e0].[Id], [l].[Id]
 
-SELECT [l].[Id], [l].[Level2_Optional_Id], [l].[Level2_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId], [l1].[Id], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_InverseId], [l1].[OneToMany_Optional_Self_InverseId], [l1].[OneToMany_Required_InverseId], [l1].[OneToMany_Required_Self_InverseId], [l1].[OneToOne_Optional_PK_InverseId], [l1].[OneToOne_Optional_SelfId]
-FROM [Level3] AS [l]
+SELECT [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId], [l2].[Id], [l2].[Level1_Optional_Id], [l2].[Level1_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_InverseId], [l2].[OneToMany_Optional_Self_InverseId], [l2].[OneToMany_Required_InverseId], [l2].[OneToMany_Required_Self_InverseId], [l2].[OneToOne_Optional_PK_InverseId], [l2].[OneToOne_Optional_SelfId]
+FROM [Level3] AS [l0]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+    SELECT DISTINCT [e0].[Id], [l].[Id] AS [Id0]
     FROM [Level2] AS [l]
     INNER JOIN (
         SELECT DISTINCT [e].[Id]
         FROM [Level1] AS [e]
-    ) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
-) AS [l0] ON [l].[OneToMany_Optional_InverseId] = [l0].[Id0]
-INNER JOIN [Level2] AS [l1] ON [l].[OneToMany_Required_InverseId] = [l1].[Id]
-ORDER BY [l0].[Id], [l0].[Id0], [l1].[Id]
+    ) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
+) AS [l1] ON [l0].[OneToMany_Optional_InverseId] = [l1].[Id0]
+INNER JOIN [Level2] AS [l2] ON [l0].[OneToMany_Required_InverseId] = [l2].[Id]
+ORDER BY [l1].[Id], [l1].[Id0], [l2].[Id]
 
-SELECT [l].[Id], [l].[Level2_Optional_Id], [l].[Level2_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
-FROM [Level3] AS [l]
+SELECT [l3].[Id], [l3].[Level2_Optional_Id], [l3].[Level2_Required_Id], [l3].[Name], [l3].[OneToMany_Optional_InverseId], [l3].[OneToMany_Optional_Self_InverseId], [l3].[OneToMany_Required_InverseId], [l3].[OneToMany_Required_Self_InverseId], [l3].[OneToOne_Optional_PK_InverseId], [l3].[OneToOne_Optional_SelfId]
+FROM [Level3] AS [l3]
 INNER JOIN (
-    SELECT DISTINCT [l0].[Id], [l0].[Id0], [l1].[Id] AS [Id1]
-    FROM [Level3] AS [l]
+    SELECT DISTINCT [l1].[Id], [l1].[Id0], [l2].[Id] AS [Id1]
+    FROM [Level3] AS [l0]
     INNER JOIN (
-        SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+        SELECT DISTINCT [e0].[Id], [l].[Id] AS [Id0]
         FROM [Level2] AS [l]
         INNER JOIN (
             SELECT DISTINCT [e].[Id]
             FROM [Level1] AS [e]
-        ) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
-    ) AS [l0] ON [l].[OneToMany_Optional_InverseId] = [l0].[Id0]
-    INNER JOIN [Level2] AS [l1] ON [l].[OneToMany_Required_InverseId] = [l1].[Id]
-) AS [l1] ON [l].[OneToMany_Optional_InverseId] = [l1].[Id1]
-ORDER BY [l1].[Id], [l1].[Id0], [l1].[Id1]", 
+        ) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
+    ) AS [l1] ON [l0].[OneToMany_Optional_InverseId] = [l1].[Id0]
+    INNER JOIN [Level2] AS [l2] ON [l0].[OneToMany_Required_InverseId] = [l2].[Id]
+) AS [l20] ON [l3].[OneToMany_Optional_InverseId] = [l20].[Id1]
+ORDER BY [l20].[Id], [l20].[Id0], [l20].[Id1]",
                 Sql);
         }
 
@@ -101,32 +101,32 @@ public override void Multi_level_include_with_short_circuiting()
             base.Multi_level_include_with_short_circuiting();
 
             Assert.Equal(
-                @"SELECT [x].[Name], [x].[LabelDefaultText], [x].[PlaceholderDefaultText], [c].[DefaultText], [c0].[DefaultText]
+                @"SELECT [x].[Name], [x].[LabelDefaultText], [x].[PlaceholderDefaultText], [c].[DefaultText], [c3].[DefaultText]
 FROM [ComplexNavigationField] AS [x]
 LEFT JOIN [ComplexNavigationString] AS [c] ON [x].[LabelDefaultText] = [c].[DefaultText]
-LEFT JOIN [ComplexNavigationString] AS [c0] ON [x].[PlaceholderDefaultText] = [c0].[DefaultText]
-ORDER BY [c].[DefaultText], [c0].[DefaultText]
+LEFT JOIN [ComplexNavigationString] AS [c3] ON [x].[PlaceholderDefaultText] = [c3].[DefaultText]
+ORDER BY [c].[DefaultText], [c3].[DefaultText]
 
-SELECT [c].[Text], [c].[ComplexNavigationStringDefaultText], [c].[LanguageName], [c1].[Name], [c1].[CultureString]
-FROM [ComplexNavigationGlobalization] AS [c]
+SELECT [c0].[Text], [c0].[ComplexNavigationStringDefaultText], [c0].[LanguageName], [c2].[Name], [c2].[CultureString]
+FROM [ComplexNavigationGlobalization] AS [c0]
 INNER JOIN (
     SELECT DISTINCT [c].[DefaultText]
     FROM [ComplexNavigationField] AS [x]
     LEFT JOIN [ComplexNavigationString] AS [c] ON [x].[LabelDefaultText] = [c].[DefaultText]
-) AS [c0] ON [c].[ComplexNavigationStringDefaultText] = [c0].[DefaultText]
-LEFT JOIN [ComplexNavigationLanguage] AS [c1] ON [c].[LanguageName] = [c1].[Name]
-ORDER BY [c0].[DefaultText]
+) AS [c1] ON [c0].[ComplexNavigationStringDefaultText] = [c1].[DefaultText]
+LEFT JOIN [ComplexNavigationLanguage] AS [c2] ON [c0].[LanguageName] = [c2].[Name]
+ORDER BY [c1].[DefaultText]
 
-SELECT [c].[Text], [c].[ComplexNavigationStringDefaultText], [c].[LanguageName], [c1].[Name], [c1].[CultureString]
-FROM [ComplexNavigationGlobalization] AS [c]
+SELECT [c4].[Text], [c4].[ComplexNavigationStringDefaultText], [c4].[LanguageName], [c5].[Name], [c5].[CultureString]
+FROM [ComplexNavigationGlobalization] AS [c4]
 INNER JOIN (
-    SELECT DISTINCT [c].[DefaultText], [c0].[DefaultText] AS [DefaultText0]
+    SELECT DISTINCT [c].[DefaultText], [c3].[DefaultText] AS [DefaultText0]
     FROM [ComplexNavigationField] AS [x]
     LEFT JOIN [ComplexNavigationString] AS [c] ON [x].[LabelDefaultText] = [c].[DefaultText]
-    LEFT JOIN [ComplexNavigationString] AS [c0] ON [x].[PlaceholderDefaultText] = [c0].[DefaultText]
-) AS [c0] ON [c].[ComplexNavigationStringDefaultText] = [c0].[DefaultText0]
-LEFT JOIN [ComplexNavigationLanguage] AS [c1] ON [c].[LanguageName] = [c1].[Name]
-ORDER BY [c0].[DefaultText], [c0].[DefaultText0]", 
+    LEFT JOIN [ComplexNavigationString] AS [c3] ON [x].[PlaceholderDefaultText] = [c3].[DefaultText]
+) AS [c30] ON [c4].[ComplexNavigationStringDefaultText] = [c30].[DefaultText0]
+LEFT JOIN [ComplexNavigationLanguage] AS [c5] ON [c4].[LanguageName] = [c5].[Name]
+ORDER BY [c30].[DefaultText], [c30].[DefaultText0]",
                 Sql);
         }
 
@@ -207,6 +207,26 @@ FROM [Level2] AS [subQuery0]
                 Sql);
         }
 
+        public override void Join_navigations_in_inner_selector_translated_to_multiple_subquery_without_collision()
+        {
+            base.Join_navigations_in_inner_selector_translated_to_multiple_subquery_without_collision();
+
+            Assert.Equal(
+                @"SELECT [e2].[Id], [e1].[Id], [e3].[Id]
+FROM [Level2] AS [e2]
+INNER JOIN [Level1] AS [e1] ON [e2].[Id] = (
+    SELECT TOP(1) [subQuery0].[Id]
+    FROM [Level2] AS [subQuery0]
+    WHERE [subQuery0].[Level1_Optional_Id] = [e1].[Id]
+)
+INNER JOIN [Level3] AS [e3] ON [e2].[Id] = (
+    SELECT TOP(1) [subQuery2].[Id]
+    FROM [Level2] AS [subQuery2]
+    WHERE [subQuery2].[Id] = [e3].[Level2_Optional_Id]
+)",
+                Sql);
+        }
+
         public override void Join_navigation_translated_to_subquery_non_key_join()
         {
             base.Join_navigation_translated_to_subquery_non_key_join();
@@ -225,7 +245,7 @@ FROM [Level2] AS [subQuery0]
         public override void Join_navigation_translated_to_subquery_self_ref()
         {
             base.Join_navigation_translated_to_subquery_self_ref();
-            
+
             Assert.Equal(
                 @"SELECT [e1].[Id], [e2].[Id]
 FROM [Level1] AS [e1]
@@ -245,9 +265,9 @@ public override void Join_navigation_translated_to_subquery_nested()
                 @"SELECT [e3].[Id], [e1].[Id]
 FROM [Level3] AS [e3]
 INNER JOIN [Level1] AS [e1] ON [e3].[Id] = (
-    SELECT TOP(1) [subQuery0.OneToOne_Optional_FK].[Id]
+    SELECT TOP(1) [subQuery.OneToOne_Optional_FK0].[Id]
     FROM [Level2] AS [subQuery0]
-    INNER JOIN [Level3] AS [subQuery0.OneToOne_Optional_FK] ON [subQuery0].[Id] = [subQuery0.OneToOne_Optional_FK].[Level2_Optional_Id]
+    INNER JOIN [Level3] AS [subQuery.OneToOne_Optional_FK0] ON [subQuery0].[Id] = [subQuery.OneToOne_Optional_FK0].[Level2_Optional_Id]
     WHERE [subQuery0].[Level1_Required_Id] = [e1].[Id]
 )",
                 Sql);
@@ -261,10 +281,10 @@ public override void Join_navigation_translated_to_subquery_deeply_nested_non_ke
                 @"SELECT [e4].[Id], [e4].[Name], [e1].[Id], [e1].[Name]
 FROM [Level4] AS [e4]
 INNER JOIN [Level1] AS [e1] ON [e4].[Name] = (
-    SELECT TOP(1) [subQuery0.OneToOne_Optional_FK.OneToOne_Required_PK].[Name]
+    SELECT TOP(1) [subQuery.OneToOne_Optional_FK.OneToOne_Required_PK0].[Name]
     FROM [Level2] AS [subQuery0]
-    INNER JOIN [Level3] AS [subQuery0.OneToOne_Optional_FK] ON [subQuery0].[Id] = [subQuery0.OneToOne_Optional_FK].[Level2_Optional_Id]
-    INNER JOIN [Level4] AS [subQuery0.OneToOne_Optional_FK.OneToOne_Required_PK] ON [subQuery0.OneToOne_Optional_FK].[Id] = [subQuery0.OneToOne_Optional_FK.OneToOne_Required_PK].[Id]
+    INNER JOIN [Level3] AS [subQuery.OneToOne_Optional_FK0] ON [subQuery0].[Id] = [subQuery.OneToOne_Optional_FK0].[Level2_Optional_Id]
+    INNER JOIN [Level4] AS [subQuery.OneToOne_Optional_FK.OneToOne_Required_PK0] ON [subQuery.OneToOne_Optional_FK0].[Id] = [subQuery.OneToOne_Optional_FK.OneToOne_Required_PK0].[Id]
     WHERE [subQuery0].[Level1_Required_Id] = [e1].[Id]
 )",
                 Sql);
@@ -275,28 +295,28 @@ public override void Multiple_complex_includes()
             base.Multiple_complex_includes();
 
             Assert.Equal(
-                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
+                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l1].[Id], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_InverseId], [l1].[OneToMany_Optional_Self_InverseId], [l1].[OneToMany_Required_InverseId], [l1].[OneToMany_Required_Self_InverseId], [l1].[OneToOne_Optional_PK_InverseId], [l1].[OneToOne_Optional_SelfId]
 FROM [Level1] AS [e]
-LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
-ORDER BY [e].[Id], [l].[Id]
+LEFT JOIN [Level2] AS [l1] ON [l1].[Level1_Optional_Id] = [e].[Id]
+ORDER BY [e].[Id], [l1].[Id]
 
 SELECT [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId], [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId]
 FROM [Level2] AS [l]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [Level1] AS [e]
-) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
+) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
 LEFT JOIN [Level3] AS [l0] ON [l0].[Level2_Optional_Id] = [l].[Id]
-ORDER BY [e].[Id]
+ORDER BY [e0].[Id]
 
-SELECT [l].[Id], [l].[Level2_Optional_Id], [l].[Level2_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
-FROM [Level3] AS [l]
+SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_InverseId], [l2].[OneToMany_Optional_Self_InverseId], [l2].[OneToMany_Required_InverseId], [l2].[OneToMany_Required_Self_InverseId], [l2].[OneToOne_Optional_PK_InverseId], [l2].[OneToOne_Optional_SelfId]
+FROM [Level3] AS [l2]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+    SELECT DISTINCT [e].[Id], [l1].[Id] AS [Id0]
     FROM [Level1] AS [e]
-    LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
-) AS [l0] ON [l].[OneToMany_Optional_InverseId] = [l0].[Id0]
-ORDER BY [l0].[Id], [l0].[Id0]",
+    LEFT JOIN [Level2] AS [l1] ON [l1].[Level1_Optional_Id] = [e].[Id]
+) AS [l10] ON [l2].[OneToMany_Optional_InverseId] = [l10].[Id0]
+ORDER BY [l10].[Id], [l10].[Id0]",
                 Sql);
         }
 
@@ -305,28 +325,28 @@ public override void Multiple_complex_includes_self_ref()
             base.Multiple_complex_includes_self_ref();
 
             Assert.Equal(
-                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l].[Id], [l].[Name], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_SelfId]
+                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l1].[Id], [l1].[Name], [l1].[OneToMany_Optional_Self_InverseId], [l1].[OneToMany_Required_Self_InverseId], [l1].[OneToOne_Optional_SelfId]
 FROM [Level1] AS [e]
-LEFT JOIN [Level1] AS [l] ON [e].[OneToOne_Optional_SelfId] = [l].[Id]
-ORDER BY [e].[Id], [l].[Id]
+LEFT JOIN [Level1] AS [l1] ON [e].[OneToOne_Optional_SelfId] = [l1].[Id]
+ORDER BY [e].[Id], [l1].[Id]
 
-SELECT [l].[Id], [l].[Name], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_SelfId]
-FROM [Level1] AS [l]
+SELECT [l2].[Id], [l2].[Name], [l2].[OneToMany_Optional_Self_InverseId], [l2].[OneToMany_Required_Self_InverseId], [l2].[OneToOne_Optional_SelfId]
+FROM [Level1] AS [l2]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+    SELECT DISTINCT [e].[Id], [l1].[Id] AS [Id0]
     FROM [Level1] AS [e]
-    LEFT JOIN [Level1] AS [l] ON [e].[OneToOne_Optional_SelfId] = [l].[Id]
-) AS [l0] ON [l].[OneToMany_Optional_Self_InverseId] = [l0].[Id0]
-ORDER BY [l0].[Id], [l0].[Id0]
+    LEFT JOIN [Level1] AS [l1] ON [e].[OneToOne_Optional_SelfId] = [l1].[Id]
+) AS [l10] ON [l2].[OneToMany_Optional_Self_InverseId] = [l10].[Id0]
+ORDER BY [l10].[Id], [l10].[Id0]
 
 SELECT [l].[Id], [l].[Name], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_SelfId], [l0].[Id], [l0].[Name], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_SelfId]
 FROM [Level1] AS [l]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [Level1] AS [e]
-) AS [e] ON [l].[OneToMany_Optional_Self_InverseId] = [e].[Id]
+) AS [e0] ON [l].[OneToMany_Optional_Self_InverseId] = [e0].[Id]
 LEFT JOIN [Level1] AS [l0] ON [l].[OneToOne_Optional_SelfId] = [l0].[Id]
-ORDER BY [e].[Id]",
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -335,28 +355,28 @@ public override void Multiple_complex_include_select()
             base.Multiple_complex_include_select();
 
             Assert.Equal(
-                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
+                @"SELECT [e].[Id], [e].[Name], [e].[OneToMany_Optional_Self_InverseId], [e].[OneToMany_Required_Self_InverseId], [e].[OneToOne_Optional_SelfId], [l1].[Id], [l1].[Level1_Optional_Id], [l1].[Level1_Required_Id], [l1].[Name], [l1].[OneToMany_Optional_InverseId], [l1].[OneToMany_Optional_Self_InverseId], [l1].[OneToMany_Required_InverseId], [l1].[OneToMany_Required_Self_InverseId], [l1].[OneToOne_Optional_PK_InverseId], [l1].[OneToOne_Optional_SelfId]
 FROM [Level1] AS [e]
-LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
-ORDER BY [e].[Id], [l].[Id]
+LEFT JOIN [Level2] AS [l1] ON [l1].[Level1_Optional_Id] = [e].[Id]
+ORDER BY [e].[Id], [l1].[Id]
 
 SELECT [l].[Id], [l].[Level1_Optional_Id], [l].[Level1_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId], [l0].[Id], [l0].[Level2_Optional_Id], [l0].[Level2_Required_Id], [l0].[Name], [l0].[OneToMany_Optional_InverseId], [l0].[OneToMany_Optional_Self_InverseId], [l0].[OneToMany_Required_InverseId], [l0].[OneToMany_Required_Self_InverseId], [l0].[OneToOne_Optional_PK_InverseId], [l0].[OneToOne_Optional_SelfId]
 FROM [Level2] AS [l]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [Level1] AS [e]
-) AS [e] ON [l].[OneToMany_Optional_InverseId] = [e].[Id]
+) AS [e0] ON [l].[OneToMany_Optional_InverseId] = [e0].[Id]
 LEFT JOIN [Level3] AS [l0] ON [l0].[Level2_Optional_Id] = [l].[Id]
-ORDER BY [e].[Id]
+ORDER BY [e0].[Id]
 
-SELECT [l].[Id], [l].[Level2_Optional_Id], [l].[Level2_Required_Id], [l].[Name], [l].[OneToMany_Optional_InverseId], [l].[OneToMany_Optional_Self_InverseId], [l].[OneToMany_Required_InverseId], [l].[OneToMany_Required_Self_InverseId], [l].[OneToOne_Optional_PK_InverseId], [l].[OneToOne_Optional_SelfId]
-FROM [Level3] AS [l]
+SELECT [l2].[Id], [l2].[Level2_Optional_Id], [l2].[Level2_Required_Id], [l2].[Name], [l2].[OneToMany_Optional_InverseId], [l2].[OneToMany_Optional_Self_InverseId], [l2].[OneToMany_Required_InverseId], [l2].[OneToMany_Required_Self_InverseId], [l2].[OneToOne_Optional_PK_InverseId], [l2].[OneToOne_Optional_SelfId]
+FROM [Level3] AS [l2]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [l].[Id] AS [Id0]
+    SELECT DISTINCT [e].[Id], [l1].[Id] AS [Id0]
     FROM [Level1] AS [e]
-    LEFT JOIN [Level2] AS [l] ON [l].[Level1_Optional_Id] = [e].[Id]
-) AS [l0] ON [l].[OneToMany_Optional_InverseId] = [l0].[Id0]
-ORDER BY [l0].[Id], [l0].[Id0]",
+    LEFT JOIN [Level2] AS [l1] ON [l1].[Level1_Optional_Id] = [e].[Id]
+) AS [l10] ON [l2].[OneToMany_Optional_InverseId] = [l10].[Id0]
+ORDER BY [l10].[Id], [l10].[Id0]",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/FromSqlQuerySqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/FromSqlQuerySqlServerTest.cs
index 5befacc8205..81921b18903 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/FromSqlQuerySqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/FromSqlQuerySqlServerTest.cs
@@ -249,8 +249,8 @@ SELECT DISTINCT [c].[CustomerID]
     FROM (
         SELECT * FROM ""Customers""
     ) AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -274,8 +274,8 @@ SELECT DISTINCT [c].[CustomerID]
         SELECT * FROM ""Customers""
     ) AS [c]
     WHERE [c].[City] = 'London'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/GearsOfWarQuerySqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/GearsOfWarQuerySqlServerTest.cs
index c7c6ce6cb54..e8abe0cb38b 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/GearsOfWarQuerySqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/GearsOfWarQuerySqlServerTest.cs
@@ -33,8 +33,8 @@ SELECT [g].*
         FROM [Gear] AS [g]
         WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
     ) AS [g] ON ([t].[GearNickName] = [g].[Nickname]) AND ([t].[GearSquadId] = [g].[SquadId])
-) AS [g] ON [w].[OwnerFullName] = [g].[FullName]
-ORDER BY [g].[FullName]",
+) AS [g0] ON [w].[OwnerFullName] = [g0].[FullName]
+ORDER BY [g0].[FullName]",
                 Sql);
         }
 
@@ -62,8 +62,8 @@ SELECT [g].*
         FROM [Gear] AS [g]
         WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
     ) AS [g] ON ([t].[GearNickName] = [g].[Nickname]) AND ([t].[GearSquadId] = [g].[SquadId])
-) AS [g] ON [w].[OwnerFullName] = [g].[FullName]
-ORDER BY [g].[FullName]",
+) AS [g0] ON [w].[OwnerFullName] = [g0].[FullName]
+ORDER BY [g0].[FullName]",
                 Sql);
         }
 
@@ -82,8 +82,8 @@ FROM [Gear] AS [g]
 LEFT JOIN [Squad] AS [s] ON [g].[SquadId] = [s].[Id]
 ORDER BY [s].[Id]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [s].[Id]
     FROM [CogTag] AS [t]
@@ -93,9 +93,10 @@ FROM [Gear] AS [g]
         WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
     ) AS [g] ON ([t].[GearNickName] = [g].[Nickname]) AND ([t].[GearSquadId] = [g].[SquadId])
     LEFT JOIN [Squad] AS [s] ON [g].[SquadId] = [s].[Id]
-) AS [s] ON [g].[SquadId] = [s].[Id]
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [s].[Id]", Sql);
+) AS [s0] ON [g0].[SquadId] = [s0].[Id]
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [s0].[Id]",
+                Sql);
         }
 
         public override void Include_multiple_one_to_one_optional_and_one_to_one_required()
@@ -110,7 +111,8 @@ SELECT [g].*
     FROM [Gear] AS [g]
     WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
 ) AS [g] ON ([t].[GearNickName] = [g].[Nickname]) AND ([t].[GearSquadId] = [g].[SquadId])
-LEFT JOIN [Squad] AS [s] ON [g].[SquadId] = [s].[Id]", Sql);
+LEFT JOIN [Squad] AS [s] ON [g].[SquadId] = [s].[Id]",
+                Sql);
         }
 
         public override void Include_multiple_circular()
@@ -124,16 +126,16 @@ FROM [Gear] AS [g]
 WHERE [g].[Discriminator] IN ('Officer', 'Gear')
 ORDER BY [c].[Name]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [c].[Name]
     FROM [Gear] AS [g]
     INNER JOIN [City] AS [c] ON [g].[CityOrBirthName] = [c].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c] ON [g].[AssignedCityName] = [c].[Name]
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c].[Name]",
+) AS [c0] ON [g0].[AssignedCityName] = [c0].[Name]
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [c0].[Name]",
                 Sql);
         }
 
@@ -148,16 +150,16 @@ FROM [Gear] AS [g]
 WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] = 'Marcus')
 ORDER BY [c].[Name]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [c].[Name]
     FROM [Gear] AS [g]
     INNER JOIN [City] AS [c] ON [g].[CityOrBirthName] = [c].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] = 'Marcus')
-) AS [c] ON [g].[AssignedCityName] = [c].[Name]
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c].[Name]",
+) AS [c0] ON [g0].[AssignedCityName] = [c0].[Name]
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [c0].[Name]",
                 Sql);
         }
 
@@ -177,8 +179,8 @@ INNER JOIN (
     SELECT DISTINCT [g].[FullName]
     FROM [Gear] AS [g]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] = 'Marcus')
-) AS [g] ON [w].[OwnerFullName] = [g].[FullName]
-ORDER BY [g].[FullName]",
+) AS [g0] ON [w].[OwnerFullName] = [g0].[FullName]
+ORDER BY [g0].[FullName]",
                 Sql);
         }
 
@@ -187,68 +189,68 @@ public override void Include_multiple_include_then_include()
             base.Include_multiple_include_then_include();
 
             Assert.Equal(
-                @"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c].[Name], [c].[Location], [c0].[Name], [c0].[Location], [c1].[Name], [c1].[Location], [c2].[Name], [c2].[Location]
+                @"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c].[Name], [c].[Location], [c2].[Name], [c2].[Location], [c4].[Name], [c4].[Location], [c6].[Name], [c6].[Location]
 FROM [Gear] AS [g]
 LEFT JOIN [City] AS [c] ON [g].[AssignedCityName] = [c].[Name]
-LEFT JOIN [City] AS [c0] ON [g].[AssignedCityName] = [c0].[Name]
-INNER JOIN [City] AS [c1] ON [g].[CityOrBirthName] = [c1].[Name]
-INNER JOIN [City] AS [c2] ON [g].[CityOrBirthName] = [c2].[Name]
+LEFT JOIN [City] AS [c2] ON [g].[AssignedCityName] = [c2].[Name]
+INNER JOIN [City] AS [c4] ON [g].[CityOrBirthName] = [c4].[Name]
+INNER JOIN [City] AS [c6] ON [g].[CityOrBirthName] = [c6].[Name]
 WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-ORDER BY [g].[Nickname], [c].[Name], [c0].[Name], [c1].[Name], [c2].[Name]
+ORDER BY [g].[Nickname], [c].[Name], [c2].[Name], [c4].[Name], [c6].[Name]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
-FROM [Gear] AS [g]
+SELECT [g3].[Nickname], [g3].[SquadId], [g3].[AssignedCityName], [g3].[CityOrBirthName], [g3].[Discriminator], [g3].[FullName], [g3].[LeaderNickname], [g3].[LeaderSquadId], [g3].[Rank], [c7].[Id], [c7].[GearNickName], [c7].[GearSquadId], [c7].[Note]
+FROM [Gear] AS [g3]
 INNER JOIN (
-    SELECT DISTINCT [g].[Nickname], [c].[Name], [c0].[Name] AS [Name0], [c1].[Name] AS [Name1], [c2].[Name] AS [Name2]
+    SELECT DISTINCT [g].[Nickname], [c].[Name], [c2].[Name] AS [Name0], [c4].[Name] AS [Name1], [c6].[Name] AS [Name2]
     FROM [Gear] AS [g]
     LEFT JOIN [City] AS [c] ON [g].[AssignedCityName] = [c].[Name]
-    LEFT JOIN [City] AS [c0] ON [g].[AssignedCityName] = [c0].[Name]
-    INNER JOIN [City] AS [c1] ON [g].[CityOrBirthName] = [c1].[Name]
-    INNER JOIN [City] AS [c2] ON [g].[CityOrBirthName] = [c2].[Name]
+    LEFT JOIN [City] AS [c2] ON [g].[AssignedCityName] = [c2].[Name]
+    INNER JOIN [City] AS [c4] ON [g].[CityOrBirthName] = [c4].[Name]
+    INNER JOIN [City] AS [c6] ON [g].[CityOrBirthName] = [c6].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c2] ON [g].[AssignedCityName] = [c2].[Name2]
-LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [g].[Nickname]) AND ([c].[GearSquadId] = [g].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c2].[Nickname], [c2].[Name], [c2].[Name0], [c2].[Name1], [c2].[Name2]
+) AS [c60] ON [g3].[AssignedCityName] = [c60].[Name2]
+LEFT JOIN [CogTag] AS [c7] ON ([c7].[GearNickName] = [g3].[Nickname]) AND ([c7].[GearSquadId] = [g3].[SquadId])
+WHERE ([g3].[Discriminator] = 'Officer') OR ([g3].[Discriminator] = 'Gear')
+ORDER BY [c60].[Nickname], [c60].[Name], [c60].[Name0], [c60].[Name1], [c60].[Name2]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
-FROM [Gear] AS [g]
+SELECT [g2].[Nickname], [g2].[SquadId], [g2].[AssignedCityName], [g2].[CityOrBirthName], [g2].[Discriminator], [g2].[FullName], [g2].[LeaderNickname], [g2].[LeaderSquadId], [g2].[Rank], [c5].[Id], [c5].[GearNickName], [c5].[GearSquadId], [c5].[Note]
+FROM [Gear] AS [g2]
 INNER JOIN (
-    SELECT DISTINCT [g].[Nickname], [c].[Name], [c0].[Name] AS [Name0], [c1].[Name] AS [Name1]
+    SELECT DISTINCT [g].[Nickname], [c].[Name], [c2].[Name] AS [Name0], [c4].[Name] AS [Name1]
     FROM [Gear] AS [g]
     LEFT JOIN [City] AS [c] ON [g].[AssignedCityName] = [c].[Name]
-    LEFT JOIN [City] AS [c0] ON [g].[AssignedCityName] = [c0].[Name]
-    INNER JOIN [City] AS [c1] ON [g].[CityOrBirthName] = [c1].[Name]
+    LEFT JOIN [City] AS [c2] ON [g].[AssignedCityName] = [c2].[Name]
+    INNER JOIN [City] AS [c4] ON [g].[CityOrBirthName] = [c4].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c1] ON [g].[CityOrBirthName] = [c1].[Name1]
-LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [g].[Nickname]) AND ([c].[GearSquadId] = [g].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c1].[Nickname], [c1].[Name], [c1].[Name0], [c1].[Name1]
+) AS [c40] ON [g2].[CityOrBirthName] = [c40].[Name1]
+LEFT JOIN [CogTag] AS [c5] ON ([c5].[GearNickName] = [g2].[Nickname]) AND ([c5].[GearSquadId] = [g2].[SquadId])
+WHERE ([g2].[Discriminator] = 'Officer') OR ([g2].[Discriminator] = 'Gear')
+ORDER BY [c40].[Nickname], [c40].[Name], [c40].[Name0], [c40].[Name1]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
-FROM [Gear] AS [g]
+SELECT [g1].[Nickname], [g1].[SquadId], [g1].[AssignedCityName], [g1].[CityOrBirthName], [g1].[Discriminator], [g1].[FullName], [g1].[LeaderNickname], [g1].[LeaderSquadId], [g1].[Rank], [c3].[Id], [c3].[GearNickName], [c3].[GearSquadId], [c3].[Note]
+FROM [Gear] AS [g1]
 INNER JOIN (
-    SELECT DISTINCT [g].[Nickname], [c].[Name], [c0].[Name] AS [Name0]
+    SELECT DISTINCT [g].[Nickname], [c].[Name], [c2].[Name] AS [Name0]
     FROM [Gear] AS [g]
     LEFT JOIN [City] AS [c] ON [g].[AssignedCityName] = [c].[Name]
-    LEFT JOIN [City] AS [c0] ON [g].[AssignedCityName] = [c0].[Name]
+    LEFT JOIN [City] AS [c2] ON [g].[AssignedCityName] = [c2].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c0] ON [g].[AssignedCityName] = [c0].[Name0]
-LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [g].[Nickname]) AND ([c].[GearSquadId] = [g].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c0].[Nickname], [c0].[Name], [c0].[Name0]
+) AS [c20] ON [g1].[AssignedCityName] = [c20].[Name0]
+LEFT JOIN [CogTag] AS [c3] ON ([c3].[GearNickName] = [g1].[Nickname]) AND ([c3].[GearSquadId] = [g1].[SquadId])
+WHERE ([g1].[Discriminator] = 'Officer') OR ([g1].[Discriminator] = 'Gear')
+ORDER BY [c20].[Nickname], [c20].[Name], [c20].[Name0]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [c0].[Id], [c0].[GearNickName], [c0].[GearSquadId], [c0].[Note]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank], [c1].[Id], [c1].[GearNickName], [c1].[GearSquadId], [c1].[Note]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [g].[Nickname], [c].[Name]
     FROM [Gear] AS [g]
     LEFT JOIN [City] AS [c] ON [g].[AssignedCityName] = [c].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c] ON [g].[CityOrBirthName] = [c].[Name]
-LEFT JOIN [CogTag] AS [c0] ON ([c0].[GearNickName] = [g].[Nickname]) AND ([c0].[GearSquadId] = [g].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c].[Nickname], [c].[Name]",
+) AS [c0] ON [g0].[CityOrBirthName] = [c0].[Name]
+LEFT JOIN [CogTag] AS [c1] ON ([c1].[GearNickName] = [g0].[Nickname]) AND ([c1].[GearSquadId] = [g0].[SquadId])
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [c0].[Nickname], [c0].[Name]",
                 Sql);
         }
 
@@ -262,15 +264,15 @@ FROM [Gear] AS [g]
 WHERE [g].[Discriminator] = 'Officer'
 ORDER BY [g].[Nickname], [g].[SquadId]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [g].[Nickname], [g].[SquadId]
     FROM [Gear] AS [g]
     WHERE [g].[Discriminator] = 'Officer'
-) AS [g0] ON ([g].[LeaderNickname] = [g0].[Nickname]) AND ([g].[LeaderSquadId] = [g0].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [g0].[Nickname], [g0].[SquadId]",
+) AS [g1] ON ([g0].[LeaderNickname] = [g1].[Nickname]) AND ([g0].[LeaderSquadId] = [g1].[SquadId])
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [g1].[Nickname], [g1].[SquadId]",
                 Sql);
         }
 
@@ -334,8 +336,8 @@ SELECT DISTINCT [g].[FullName]
     FROM [Gear] AS [g]
     INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [g] ON [w].[OwnerFullName] = [g].[FullName]
-ORDER BY [g].[FullName]",
+) AS [g0] ON [w].[OwnerFullName] = [g0].[FullName]
+ORDER BY [g0].[FullName]",
                 Sql);
         }
 
@@ -355,8 +357,8 @@ INNER JOIN (
     SELECT DISTINCT [g].[FullName]
     FROM [CogTag] AS [t]
     INNER JOIN [Gear] AS [g] ON ([t].[GearSquadId] = [g].[SquadId]) AND ([t].[GearNickName] = [g].[Nickname])
-) AS [g] ON [w].[OwnerFullName] = [g].[FullName]
-ORDER BY [g].[FullName]",
+) AS [g0] ON [w].[OwnerFullName] = [g0].[FullName]
+ORDER BY [g0].[FullName]",
                 Sql);
         }
 
@@ -372,17 +374,17 @@ INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nick
 WHERE [g].[Discriminator] IN ('Officer', 'Gear')
 ORDER BY [c].[Name]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+FROM [Gear] AS [g0]
 INNER JOIN (
     SELECT DISTINCT [c].[Name]
     FROM [Gear] AS [g]
     INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
     INNER JOIN [City] AS [c] ON [g].[CityOrBirthName] = [c].[Name]
     WHERE [g].[Discriminator] IN ('Officer', 'Gear')
-) AS [c] ON [g].[AssignedCityName] = [c].[Name]
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [c].[Name]",
+) AS [c0] ON [g0].[AssignedCityName] = [c0].[Name]
+WHERE ([g0].[Discriminator] = 'Officer') OR ([g0].[Discriminator] = 'Gear')
+ORDER BY [c0].[Name]",
                 Sql);
         }
 
@@ -394,9 +396,9 @@ public override void Include_with_join_and_inheritance1()
                 @"SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [c].[Name], [c].[Location]
 FROM [CogTag] AS [t]
 INNER JOIN (
-    SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-    FROM [Gear] AS [g]
-    WHERE [g].[Discriminator] = 'Officer'
+    SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+    FROM [Gear] AS [g0]
+    WHERE [g0].[Discriminator] = 'Officer'
 ) AS [t0] ON ([t].[GearSquadId] = [t0].[SquadId]) AND ([t].[GearNickName] = [t0].[Nickname])
 INNER JOIN [City] AS [c] ON [t0].[CityOrBirthName] = [c].[Name]",
                 Sql);
@@ -407,27 +409,27 @@ public override void Include_with_join_and_inheritance2()
             base.Include_with_join_and_inheritance2();
 
             Assert.Equal(
-                @"SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
+                @"SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
 FROM (
-    SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-    FROM [Gear] AS [g]
-    WHERE [g].[Discriminator] = 'Officer'
-) AS [t0]
-INNER JOIN [CogTag] AS [t] ON ([t0].[SquadId] = [t].[GearSquadId]) AND ([t0].[Nickname] = [t].[GearNickName])
-ORDER BY [t0].[FullName]
+    SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+    FROM [Gear] AS [g0]
+    WHERE [g0].[Discriminator] = 'Officer'
+) AS [t]
+INNER JOIN [CogTag] AS [t0] ON ([t].[SquadId] = [t0].[GearSquadId]) AND ([t].[Nickname] = [t0].[GearNickName])
+ORDER BY [t].[FullName]
 
 SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
 FROM [Weapon] AS [w]
 INNER JOIN (
-    SELECT DISTINCT [t0].[FullName]
+    SELECT DISTINCT [t].[FullName]
     FROM (
-        SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-        FROM [Gear] AS [g]
-        WHERE [g].[Discriminator] = 'Officer'
-    ) AS [t0]
-    INNER JOIN [CogTag] AS [t] ON ([t0].[SquadId] = [t].[GearSquadId]) AND ([t0].[Nickname] = [t].[GearNickName])
-) AS [t0] ON [w].[OwnerFullName] = [t0].[FullName]
-ORDER BY [t0].[FullName]",
+        SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+        FROM [Gear] AS [g0]
+        WHERE [g0].[Discriminator] = 'Officer'
+    ) AS [t]
+    INNER JOIN [CogTag] AS [t0] ON ([t].[SquadId] = [t0].[GearSquadId]) AND ([t].[Nickname] = [t0].[GearNickName])
+) AS [t1] ON [w].[OwnerFullName] = [t1].[FullName]
+ORDER BY [t1].[FullName]",
                 Sql);
         }
 
@@ -439,25 +441,25 @@ public override void Include_with_join_and_inheritance3()
                 @"SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
 FROM [CogTag] AS [t]
 INNER JOIN (
-    SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-    FROM [Gear] AS [g]
-    WHERE [g].[Discriminator] = 'Officer'
+    SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+    FROM [Gear] AS [g0]
+    WHERE [g0].[Discriminator] = 'Officer'
 ) AS [t0] ON ([t].[GearSquadId] = [t0].[SquadId]) AND ([t].[GearNickName] = [t0].[Nickname])
 ORDER BY [t0].[Nickname], [t0].[SquadId]
 
-SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-FROM [Gear] AS [g]
+SELECT [g1].[Nickname], [g1].[SquadId], [g1].[AssignedCityName], [g1].[CityOrBirthName], [g1].[Discriminator], [g1].[FullName], [g1].[LeaderNickname], [g1].[LeaderSquadId], [g1].[Rank]
+FROM [Gear] AS [g1]
 INNER JOIN (
     SELECT DISTINCT [t0].[Nickname], [t0].[SquadId]
     FROM [CogTag] AS [t]
     INNER JOIN (
-        SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-        FROM [Gear] AS [g]
-        WHERE [g].[Discriminator] = 'Officer'
+        SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+        FROM [Gear] AS [g0]
+        WHERE [g0].[Discriminator] = 'Officer'
     ) AS [t0] ON ([t].[GearSquadId] = [t0].[SquadId]) AND ([t].[GearNickName] = [t0].[Nickname])
-) AS [t0] ON ([g].[LeaderNickname] = [t0].[Nickname]) AND ([g].[LeaderSquadId] = [t0].[SquadId])
-WHERE ([g].[Discriminator] = 'Officer') OR ([g].[Discriminator] = 'Gear')
-ORDER BY [t0].[Nickname], [t0].[SquadId]",
+) AS [t00] ON ([g1].[LeaderNickname] = [t00].[Nickname]) AND ([g1].[LeaderSquadId] = [t00].[SquadId])
+WHERE ([g1].[Discriminator] = 'Officer') OR ([g1].[Discriminator] = 'Gear')
+ORDER BY [t00].[Nickname], [t00].[SquadId]",
                 Sql);
         }
 
@@ -542,6 +544,35 @@ FROM [Weapon] AS [w]
                 Sql);
         }
 
+        public override void Where_count_subquery_without_collision()
+        {
+            base.Where_count_subquery_without_collision();
+
+            Assert.Equal(
+                @"SELECT [w].[Nickname], [w].[SquadId], [w].[AssignedCityName], [w].[CityOrBirthName], [w].[Discriminator], [w].[FullName], [w].[LeaderNickname], [w].[LeaderSquadId], [w].[Rank]
+FROM [Gear] AS [w]
+WHERE [w].[Discriminator] IN ('Officer', 'Gear') AND ((
+    SELECT COUNT(*)
+    FROM [Weapon] AS [w0]
+    WHERE [w].[FullName] = [w0].[OwnerFullName]
+) = 2)",
+                Sql);
+        }
+
+        public override void Where_any_subquery_without_collision()
+        {
+            base.Where_any_subquery_without_collision();
+
+            Assert.Equal(
+                @"SELECT [w].[Nickname], [w].[SquadId], [w].[AssignedCityName], [w].[CityOrBirthName], [w].[Discriminator], [w].[FullName], [w].[LeaderNickname], [w].[LeaderSquadId], [w].[Rank]
+FROM [Gear] AS [w]
+WHERE [w].[Discriminator] IN ('Officer', 'Gear') AND EXISTS (
+    SELECT 1
+    FROM [Weapon] AS [w0]
+    WHERE [w].[FullName] = [w0].[OwnerFullName])",
+                Sql);
+        }
+
         public override void Select_inverted_boolean()
         {
             base.Select_inverted_boolean();
@@ -820,9 +851,9 @@ public override void Collection_with_inheritance_and_join_include_joined()
                 @"SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
 FROM [CogTag] AS [t]
 INNER JOIN (
-    SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-    FROM [Gear] AS [g]
-    WHERE [g].[Discriminator] = 'Officer'
+    SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+    FROM [Gear] AS [g0]
+    WHERE [g0].[Discriminator] = 'Officer'
 ) AS [t0] ON ([t].[GearSquadId] = [t0].[SquadId]) AND ([t].[GearNickName] = [t0].[Nickname])
 LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [t0].[Nickname]) AND ([c].[GearSquadId] = [t0].[SquadId])",
                 Sql);
@@ -833,14 +864,14 @@ public override void Collection_with_inheritance_and_join_include_source()
             base.Collection_with_inheritance_and_join_include_source();
 
             Assert.Equal(
-                @"SELECT [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
+                @"SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank], [c].[Id], [c].[GearNickName], [c].[GearSquadId], [c].[Note]
 FROM (
-    SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
-    FROM [Gear] AS [g]
-    WHERE [g].[Discriminator] = 'Officer'
-) AS [t0]
-INNER JOIN [CogTag] AS [t] ON ([t0].[SquadId] = [t].[GearSquadId]) AND ([t0].[Nickname] = [t].[GearNickName])
-LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [t0].[Nickname]) AND ([c].[GearSquadId] = [t0].[SquadId])",
+    SELECT [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOrBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank]
+    FROM [Gear] AS [g0]
+    WHERE [g0].[Discriminator] = 'Officer'
+) AS [t]
+INNER JOIN [CogTag] AS [t0] ON ([t].[SquadId] = [t0].[GearSquadId]) AND ([t].[Nickname] = [t0].[GearNickName])
+LEFT JOIN [CogTag] AS [c] ON ([c].[GearNickName] = [t].[Nickname]) AND ([c].[GearSquadId] = [t].[SquadId])",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/IncludeSqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/IncludeSqlServerTest.cs
index 2f7571e47bc..0432347e8be 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/IncludeSqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/IncludeSqlServerTest.cs
@@ -26,14 +26,14 @@ public override void Include_list()
 FROM [Products] AS [c]
 ORDER BY [c].[ProductID]
 
-SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice], [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
-FROM [Order Details] AS [o]
+SELECT [o0].[OrderID], [o0].[ProductID], [o0].[Discount], [o0].[Quantity], [o0].[UnitPrice], [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate]
+FROM [Order Details] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[ProductID]
     FROM [Products] AS [c]
-) AS [c] ON [o].[ProductID] = [c].[ProductID]
-INNER JOIN [Orders] AS [o0] ON [o].[OrderID] = [o0].[OrderID]
-ORDER BY [c].[ProductID]",
+) AS [c0] ON [o0].[ProductID] = [c0].[ProductID]
+INNER JOIN [Orders] AS [o1] ON [o0].[OrderID] = [o1].[OrderID]
+ORDER BY [c0].[ProductID]",
                 Sql);
         }
 
@@ -46,13 +46,13 @@ public override void Include_collection()
 FROM [Customers] AS [c]
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -66,13 +66,13 @@ FROM [Orders] AS [o]
 LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
 ORDER BY [o].[OrderID]
 
-SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice]
-FROM [Order Details] AS [o]
+SELECT [o00].[OrderID], [o00].[ProductID], [o00].[Discount], [o00].[Quantity], [o00].[UnitPrice]
+FROM [Order Details] AS [o00]
 INNER JOIN (
     SELECT DISTINCT [o].[OrderID]
     FROM [Orders] AS [o]
-) AS [o0] ON [o].[OrderID] = [o0].[OrderID]
-ORDER BY [o0].[OrderID]",
+) AS [o1] ON [o00].[OrderID] = [o1].[OrderID]
+ORDER BY [o1].[OrderID]",
                 Sql);
         }
 
@@ -125,15 +125,15 @@ FROM [Order Details] AS [od]
 LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o00].[OrderID], [o00].[CustomerID], [o00].[EmployeeID], [o00].[OrderDate]
+FROM [Orders] AS [o00]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Order Details] AS [od]
     INNER JOIN [Orders] AS [o] ON [od].[OrderID] = [o].[OrderID]
     LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o00].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -148,16 +148,16 @@ FROM [Orders] AS [o]
 WHERE [o].[OrderID] = 10248
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o00].[OrderID], [o00].[CustomerID], [o00].[EmployeeID], [o00].[OrderDate]
+FROM [Orders] AS [o00]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [c].[CustomerID]
     FROM [Orders] AS [o]
     LEFT JOIN [Customers] AS [c] ON [o].[CustomerID] = [c].[CustomerID]
     WHERE [o].[OrderID] = 10248
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o00].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -171,16 +171,16 @@ FROM [Orders] AS [o]
 WHERE [o].[OrderID] = 10248
 ORDER BY [o].[OrderID]
 
-SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice], [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[UnitsInStock]
-FROM [Order Details] AS [o]
+SELECT [o00].[OrderID], [o00].[ProductID], [o00].[Discount], [o00].[Quantity], [o00].[UnitPrice], [p].[ProductID], [p].[Discontinued], [p].[ProductName], [p].[UnitsInStock]
+FROM [Order Details] AS [o00]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [o].[OrderID]
     FROM [Orders] AS [o]
     WHERE [o].[OrderID] = 10248
     ORDER BY [o].[OrderID]
-) AS [o0] ON [o].[OrderID] = [o0].[OrderID]
-INNER JOIN [Products] AS [p] ON [o].[ProductID] = [p].[ProductID]
-ORDER BY [o0].[OrderID]",
+) AS [o1] ON [o00].[OrderID] = [o1].[OrderID]
+INNER JOIN [Products] AS [p] ON [o00].[ProductID] = [p].[ProductID]
+ORDER BY [o1].[OrderID]",
                 Sql);
         }
 
@@ -193,13 +193,13 @@ public override void Include_collection_alias_generation()
 FROM [Orders] AS [o]
 ORDER BY [o].[OrderID]
 
-SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice]
-FROM [Order Details] AS [o]
+SELECT [o00].[OrderID], [o00].[ProductID], [o00].[Discount], [o00].[Quantity], [o00].[UnitPrice]
+FROM [Order Details] AS [o00]
 INNER JOIN (
     SELECT DISTINCT [o].[OrderID]
     FROM [Orders] AS [o]
-) AS [o0] ON [o].[OrderID] = [o0].[OrderID]
-ORDER BY [o0].[OrderID]",
+) AS [o1] ON [o00].[OrderID] = [o1].[OrderID]
+ORDER BY [o1].[OrderID]",
                 Sql);
         }
 
@@ -212,13 +212,13 @@ public override void Include_collection_order_by_key()
 FROM [Customers] AS [c]
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -231,13 +231,13 @@ public override void Include_collection_order_by_non_key()
 FROM [Customers] AS [c]
 ORDER BY [c].[City], [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[City], [c].[CustomerID]
     FROM [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[City], [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[City], [c0].[CustomerID]",
                 Sql);
         }
 
@@ -250,13 +250,13 @@ public override void Include_collection_as_no_tracking()
 FROM [Customers] AS [c]
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -274,15 +274,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -300,15 +300,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -322,14 +322,14 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -343,14 +343,14 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -363,25 +363,25 @@ public override void Include_collection_then_include_collection()
 FROM [Customers] AS [c]
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID], [o].[OrderID]
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID], [o0].[OrderID]
 
-SELECT [o].[OrderID], [o].[ProductID], [o].[Discount], [o].[Quantity], [o].[UnitPrice]
-FROM [Order Details] AS [o]
+SELECT [o10].[OrderID], [o10].[ProductID], [o10].[Discount], [o10].[Quantity], [o10].[UnitPrice]
+FROM [Order Details] AS [o10]
 INNER JOIN (
-    SELECT DISTINCT [c].[CustomerID], [o].[OrderID]
-    FROM [Orders] AS [o]
+    SELECT DISTINCT [c0].[CustomerID], [o0].[OrderID]
+    FROM [Orders] AS [o0]
     INNER JOIN (
         SELECT DISTINCT [c].[CustomerID]
         FROM [Customers] AS [c]
-    ) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-) AS [o0] ON [o].[OrderID] = [o0].[OrderID]
-ORDER BY [o0].[CustomerID], [o0].[OrderID]",
+    ) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+) AS [o00] ON [o10].[OrderID] = [o00].[OrderID]
+ORDER BY [o00].[CustomerID], [o00].[OrderID]",
                 Sql);
         }
 
@@ -406,15 +406,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o00].[OrderID], [o00].[CustomerID], [o00].[EmployeeID], [o00].[OrderDate]
+FROM [Orders] AS [o00]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c]
     INNER JOIN [Orders] AS [o] ON [c].[CustomerID] = [o].[CustomerID]
     WHERE [c].[CustomerID] = 'ALFKI'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o00].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -429,15 +429,15 @@ CROSS JOIN [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[CustomerID]
     FROM [Customers] AS [c1]
     CROSS JOIN [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -448,29 +448,29 @@ public override void Include_collection_on_additional_from_clause()
             Assert.Equal(
                 @"@__p_0: 5
 
-SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
+SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region]
 FROM (
-    SELECT TOP(@__p_0) [c].*
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]
-CROSS JOIN [Customers] AS [c]
-ORDER BY [c].[CustomerID]
+    SELECT TOP(@__p_0) [c0].*
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]
+CROSS JOIN [Customers] AS [c1]
+ORDER BY [c1].[CustomerID]
 
 @__p_0: 5
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
-    SELECT DISTINCT [c].[CustomerID]
+    SELECT DISTINCT [c1].[CustomerID]
     FROM (
-        SELECT TOP(@__p_0) [c].*
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
-    CROSS JOIN [Customers] AS [c]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+        SELECT TOP(@__p_0) [c0].*
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
+    CROSS JOIN [Customers] AS [c1]
+) AS [c10] ON [o0].[CustomerID] = [c10].[CustomerID]
+ORDER BY [c10].[CustomerID]",
                 Sql);
         }
 
@@ -483,59 +483,59 @@ public override void Include_duplicate_collection()
                 Assert.Equal(
                     @"@__p_0: 2
 
-SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region], [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region]
+SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region], [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
 FROM (
-    SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]
+    SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]
 CROSS JOIN (
-    SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
+    SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+    FROM [Customers] AS [c2]
+    ORDER BY [c2].[CustomerID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-ORDER BY [t0].[CustomerID], [t1].[CustomerID]
+) AS [t0]
+ORDER BY [t].[CustomerID], [t0].[CustomerID]
 
 @__p_0: 2
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o10].[OrderID], [o10].[CustomerID], [o10].[EmployeeID], [o10].[OrderDate]
+FROM [Orders] AS [o10]
 INNER JOIN (
-    SELECT DISTINCT [t0].[CustomerID], [t1].[CustomerID] AS [CustomerID0]
+    SELECT DISTINCT [t].[CustomerID], [t0].[CustomerID] AS [CustomerID0]
     FROM (
-        SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
+        SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
     CROSS JOIN (
-        SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
+        SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+        FROM [Customers] AS [c2]
+        ORDER BY [c2].[CustomerID]
         OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-    ) AS [t1]
-) AS [t1] ON [o].[CustomerID] = [t1].[CustomerID0]
-ORDER BY [t1].[CustomerID], [t1].[CustomerID0]
+    ) AS [t0]
+) AS [t00] ON [o10].[CustomerID] = [t00].[CustomerID0]
+ORDER BY [t00].[CustomerID], [t00].[CustomerID0]
 
 @__p_0: 2
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
-    SELECT DISTINCT [t0].[CustomerID]
+    SELECT DISTINCT [t].[CustomerID]
     FROM (
-        SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
+        SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
     CROSS JOIN (
-        SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
+        SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+        FROM [Customers] AS [c2]
+        ORDER BY [c2].[CustomerID]
         OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-    ) AS [t1]
-) AS [t0] ON [o].[CustomerID] = [t0].[CustomerID]
-ORDER BY [t0].[CustomerID]",
+    ) AS [t0]
+) AS [t1] ON [o0].[CustomerID] = [t1].[CustomerID]
+ORDER BY [t1].[CustomerID]",
                     Sql);
             }
         }
@@ -550,63 +550,63 @@ public override void Include_duplicate_collection_result_operator()
                     @"@__p_1: 1
 @__p_0: 2
 
-SELECT TOP(@__p_1) [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region], [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region]
+SELECT TOP(@__p_1) [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region], [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
 FROM (
-    SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]
+    SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]
 CROSS JOIN (
-    SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
+    SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+    FROM [Customers] AS [c2]
+    ORDER BY [c2].[CustomerID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-ORDER BY [t0].[CustomerID], [t1].[CustomerID]
+) AS [t0]
+ORDER BY [t].[CustomerID], [t0].[CustomerID]
 
 @__p_1: 1
 @__p_0: 2
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o10].[OrderID], [o10].[CustomerID], [o10].[EmployeeID], [o10].[OrderDate]
+FROM [Orders] AS [o10]
 INNER JOIN (
-    SELECT DISTINCT TOP(@__p_1) [t0].[CustomerID], [t1].[CustomerID] AS [CustomerID0]
+    SELECT DISTINCT TOP(@__p_1) [t].[CustomerID], [t0].[CustomerID] AS [CustomerID0]
     FROM (
-        SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
+        SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
     CROSS JOIN (
-        SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
+        SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+        FROM [Customers] AS [c2]
+        ORDER BY [c2].[CustomerID]
         OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-    ) AS [t1]
-    ORDER BY [t0].[CustomerID], [t1].[CustomerID]
-) AS [t1] ON [o].[CustomerID] = [t1].[CustomerID0]
-ORDER BY [t1].[CustomerID], [t1].[CustomerID0]
+    ) AS [t0]
+    ORDER BY [t].[CustomerID], [t0].[CustomerID]
+) AS [t00] ON [o10].[CustomerID] = [t00].[CustomerID0]
+ORDER BY [t00].[CustomerID], [t00].[CustomerID0]
 
 @__p_1: 1
 @__p_0: 2
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
-    SELECT DISTINCT TOP(@__p_1) [t0].[CustomerID]
+    SELECT DISTINCT TOP(@__p_1) [t].[CustomerID]
     FROM (
-        SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
+        SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
     CROSS JOIN (
-        SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
+        SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+        FROM [Customers] AS [c2]
+        ORDER BY [c2].[CustomerID]
         OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-    ) AS [t1]
-    ORDER BY [t0].[CustomerID]
-) AS [t0] ON [o].[CustomerID] = [t0].[CustomerID]
-ORDER BY [t0].[CustomerID]",
+    ) AS [t0]
+    ORDER BY [t].[CustomerID]
+) AS [t1] ON [o0].[CustomerID] = [t1].[CustomerID]
+ORDER BY [t1].[CustomerID]",
                     Sql);
             }
         }
@@ -622,15 +622,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[City], [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o00].[OrderID], [o00].[CustomerID], [o00].[EmployeeID], [o00].[OrderDate]
+FROM [Orders] AS [o00]
 INNER JOIN (
     SELECT DISTINCT [c].[City], [c].[CustomerID]
     FROM [Customers] AS [c]
     INNER JOIN [Orders] AS [o] ON [c].[CustomerID] = [o].[CustomerID]
     WHERE [c].[CustomerID] = 'ALFKI'
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[City], [c].[CustomerID]",
+) AS [c0] ON [o00].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[City], [c0].[CustomerID]",
                 Sql);
         }
 
@@ -641,13 +641,13 @@ public override void Include_collection_on_additional_from_clause2()
             Assert.Equal(
                 @"@__p_0: 5
 
-SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
+SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region]
 FROM (
-    SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]
-CROSS JOIN [Customers] AS [c]",
+    SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]
+CROSS JOIN [Customers] AS [c1]",
                 Sql);
         }
 
@@ -660,41 +660,41 @@ public override void Include_duplicate_collection_result_operator2()
                     @"@__p_1: 1
 @__p_0: 2
 
-SELECT TOP(@__p_1) [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region], [t1].[CustomerID], [t1].[Address], [t1].[City], [t1].[CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Country], [t1].[Fax], [t1].[Phone], [t1].[PostalCode], [t1].[Region]
+SELECT TOP(@__p_1) [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region], [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
 FROM (
-    SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]
+    SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]
 CROSS JOIN (
-    SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
+    SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+    FROM [Customers] AS [c2]
+    ORDER BY [c2].[CustomerID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-ORDER BY [t0].[CustomerID]
+) AS [t0]
+ORDER BY [t].[CustomerID]
 
 @__p_1: 1
 @__p_0: 2
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
-    SELECT DISTINCT TOP(@__p_1) [t0].[CustomerID]
+    SELECT DISTINCT TOP(@__p_1) [t].[CustomerID]
     FROM (
-        SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
-    ) AS [t0]
+        SELECT TOP(@__p_0) [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+        FROM [Customers] AS [c0]
+        ORDER BY [c0].[CustomerID]
+    ) AS [t]
     CROSS JOIN (
-        SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-        FROM [Customers] AS [c]
-        ORDER BY [c].[CustomerID]
+        SELECT [c2].[CustomerID], [c2].[Address], [c2].[City], [c2].[CompanyName], [c2].[ContactName], [c2].[ContactTitle], [c2].[Country], [c2].[Fax], [c2].[Phone], [c2].[PostalCode], [c2].[Region]
+        FROM [Customers] AS [c2]
+        ORDER BY [c2].[CustomerID]
         OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-    ) AS [t1]
-    ORDER BY [t0].[CustomerID]
-) AS [t0] ON [o].[CustomerID] = [t0].[CustomerID]
-ORDER BY [t0].[CustomerID]",
+    ) AS [t0]
+    ORDER BY [t].[CustomerID]
+) AS [t1] ON [o0].[CustomerID] = [t1].[CustomerID]
+ORDER BY [t1].[CustomerID]",
                     Sql);
             }
         }
@@ -742,20 +742,20 @@ public override void Include_duplicate_reference()
                 Assert.Equal(
                     @"@__p_0: 2
 
-SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
 FROM (
-    SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[CustomerID]
-) AS [t0]
+    SELECT TOP(@__p_0) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+    ORDER BY [o0].[CustomerID]
+) AS [t]
 CROSS JOIN (
-    SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[CustomerID]
+    SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate]
+    FROM [Orders] AS [o2]
+    ORDER BY [o2].[CustomerID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-LEFT JOIN [Customers] AS [c] ON [t0].[CustomerID] = [c].[CustomerID]
-LEFT JOIN [Customers] AS [c0] ON [t1].[CustomerID] = [c0].[CustomerID]",
+) AS [t0]
+LEFT JOIN [Customers] AS [c] ON [t].[CustomerID] = [c].[CustomerID]
+LEFT JOIN [Customers] AS [c0] ON [t0].[CustomerID] = [c0].[CustomerID]",
                     Sql);
             }
         }
@@ -769,19 +769,19 @@ public override void Include_duplicate_reference2()
                 Assert.Equal(
                     @"@__p_0: 2
 
-SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
+SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
 FROM (
-    SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[OrderID]
-) AS [t0]
+    SELECT TOP(@__p_0) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+    ORDER BY [o0].[OrderID]
+) AS [t]
 CROSS JOIN (
-    SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[OrderID]
+    SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate]
+    FROM [Orders] AS [o2]
+    ORDER BY [o2].[OrderID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-LEFT JOIN [Customers] AS [c] ON [t0].[CustomerID] = [c].[CustomerID]",
+) AS [t0]
+LEFT JOIN [Customers] AS [c] ON [t].[CustomerID] = [c].[CustomerID]",
                     Sql);
             }
         }
@@ -795,19 +795,19 @@ public override void Include_duplicate_reference3()
                 Assert.Equal(
                     @"@__p_0: 2
 
-SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
+SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
 FROM (
-    SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[OrderID]
-) AS [t0]
+    SELECT TOP(@__p_0) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+    ORDER BY [o0].[OrderID]
+) AS [t]
 CROSS JOIN (
-    SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[OrderID]
+    SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate]
+    FROM [Orders] AS [o2]
+    ORDER BY [o2].[OrderID]
     OFFSET 2 ROWS FETCH NEXT 2 ROWS ONLY
-) AS [t1]
-LEFT JOIN [Customers] AS [c] ON [t1].[CustomerID] = [c].[CustomerID]",
+) AS [t0]
+LEFT JOIN [Customers] AS [c] ON [t0].[CustomerID] = [c].[CustomerID]",
                     Sql);
             }
         }
@@ -860,15 +860,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -886,15 +886,15 @@ FROM [Customers] AS [c]
 WHERE [c].[CustomerID] = 'ALFKI'
 ORDER BY [c].[CustomerID]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [c].[CustomerID]
     FROM [Customers] AS [c]
     WHERE [c].[CustomerID] = 'ALFKI'
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -937,14 +937,14 @@ ORDER BY [c].[CustomerID]
 
 @__p_0: 5
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(@__p_0) [c].[CustomerID]
     FROM [Customers] AS [c]
     ORDER BY [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[CustomerID]",
                 Sql);
         }
 
@@ -971,14 +971,14 @@ FROM [Customers] AS [c]
 
 @__p_0: 10
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
     SELECT DISTINCT TOP(@__p_0) [c].[City], [c].[CustomerID]
     FROM [Customers] AS [c]
     ORDER BY [c].[City] DESC, [c].[CustomerID]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[City] DESC, [c].[CustomerID]",
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[City] DESC, [c0].[CustomerID]",
                 Sql);
         }
 
@@ -997,18 +997,18 @@ OFFSET @__p_0 ROWS
 
 @__p_0: 80
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 INNER JOIN (
-    SELECT DISTINCT [t0].*
+    SELECT DISTINCT [t].*
     FROM (
         SELECT [c].[ContactName], [c].[CustomerID]
         FROM [Customers] AS [c]
         ORDER BY [c].[ContactName], [c].[CustomerID]
         OFFSET @__p_0 ROWS
-    ) AS [t0]
-) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-ORDER BY [c].[ContactName], [c].[CustomerID]",
+    ) AS [t]
+) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+ORDER BY [c0].[ContactName], [c0].[CustomerID]",
                     Sql);
             }
         }
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceRelationshipsQuerySqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceRelationshipsQuerySqlServerTest.cs
index c761e91cd07..8d2e0d636f1 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceRelationshipsQuerySqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceRelationshipsQuerySqlServerTest.cs
@@ -192,15 +192,15 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
-FROM [BaseCollectionOnBase] AS [b]
+SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
+FROM [BaseCollectionOnBase] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-) AS [e] ON [b].[BaseParentId] = [e].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-ORDER BY [e].[Id]",
+) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -239,15 +239,15 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity') AND (([e].[Name] <> 'Bar') OR [e].[Name] IS NULL)
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
-FROM [BaseCollectionOnBase] AS [b]
+SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
+FROM [BaseCollectionOnBase] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity') AND (([e].[Name] <> 'Bar') OR [e].[Name] IS NULL)
-) AS [e] ON [b].[BaseParentId] = [e].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-ORDER BY [e].[Id]",
+) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -286,14 +286,14 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
 ORDER BY [e].[Id]
 
-SELECT [c].[Id], [c].[Name], [c].[ParentId]
-FROM [CollectionOnBase] AS [c]
+SELECT [c0].[Id], [c0].[Name], [c0].[ParentId]
+FROM [CollectionOnBase] AS [c0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-) AS [e] ON [c].[ParentId] = [e].[Id]
-ORDER BY [e].[Id]",
+) AS [e0] ON [c0].[ParentId] = [e0].[Id]
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -322,14 +322,14 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity') AND (([e].[Name] <> 'Bar') OR [e].[Name] IS NULL)
 ORDER BY [e].[Id]
 
-SELECT [c].[Id], [c].[Name], [c].[ParentId]
-FROM [CollectionOnBase] AS [c]
+SELECT [c0].[Id], [c0].[Name], [c0].[ParentId]
+FROM [CollectionOnBase] AS [c0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity') AND (([e].[Name] <> 'Bar') OR [e].[Name] IS NULL)
-) AS [e] ON [c].[ParentId] = [e].[Id]
-ORDER BY [e].[Id]",
+) AS [e0] ON [c0].[ParentId] = [e0].[Id]
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -544,15 +544,15 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
-FROM [BaseCollectionOnBase] AS [b]
+SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
+FROM [BaseCollectionOnBase] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
-) AS [e] ON [b].[BaseParentId] = [e].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-ORDER BY [e].[Id]",
+) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -566,15 +566,15 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[Discriminator], [b].[Name], [b].[ParentId], [b].[DerivedInheritanceRelationshipEntityId]
-FROM [BaseCollectionOnDerived] AS [b]
+SELECT [b0].[Id], [b0].[Discriminator], [b0].[Name], [b0].[ParentId], [b0].[DerivedInheritanceRelationshipEntityId]
+FROM [BaseCollectionOnDerived] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
-) AS [e] ON [b].[ParentId] = [e].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnDerived') OR ([b].[Discriminator] = 'BaseCollectionOnDerived')
-ORDER BY [e].[Id]",
+) AS [e0] ON [b0].[ParentId] = [e0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnDerived') OR ([b0].[Discriminator] = 'BaseCollectionOnDerived')
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -708,8 +708,8 @@ FROM [BaseReferenceOnBase] AS [b]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
 ORDER BY [b].[Id]
 
-SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
-FROM [NestedCollectionBase] AS [n]
+SELECT [n0].[Id], [n0].[Discriminator], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId]
+FROM [NestedCollectionBase] AS [n0]
 INNER JOIN (
     SELECT DISTINCT [b].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
@@ -719,9 +719,9 @@ FROM [BaseReferenceOnBase] AS [b]
         WHERE ([b].[Discriminator] = 'DerivedReferenceOnBase') OR ([b].[Discriminator] = 'BaseReferenceOnBase')
     ) AS [b] ON [b].[BaseParentId] = [e].[Id]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-) AS [b] ON [n].[ParentReferenceId] = [b].[Id]
-WHERE ([n].[Discriminator] = 'NestedCollectionDerived') OR ([n].[Discriminator] = 'NestedCollectionBase')
-ORDER BY [b].[Id]",
+) AS [b0] ON [n0].[ParentReferenceId] = [b0].[Id]
+WHERE ([n0].[Discriminator] = 'NestedCollectionDerived') OR ([n0].[Discriminator] = 'NestedCollectionBase')
+ORDER BY [b0].[Id]",
                 Sql);
         }
 
@@ -749,8 +749,8 @@ FROM [BaseReferenceOnBase] AS [b]
 WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
 ORDER BY [b].[Id]
 
-SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
-FROM [NestedCollectionBase] AS [n]
+SELECT [n0].[Id], [n0].[Discriminator], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId]
+FROM [NestedCollectionBase] AS [n0]
 INNER JOIN (
     SELECT DISTINCT [b].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
@@ -760,9 +760,9 @@ FROM [BaseReferenceOnBase] AS [b]
         WHERE ([b].[Discriminator] = 'DerivedReferenceOnBase') OR ([b].[Discriminator] = 'BaseReferenceOnBase')
     ) AS [b] ON [b].[BaseParentId] = [e].[Id]
     WHERE [e].[Discriminator] = 'DerivedInheritanceRelationshipEntity'
-) AS [b] ON [n].[ParentReferenceId] = [b].[Id]
-WHERE ([n].[Discriminator] = 'NestedCollectionDerived') OR ([n].[Discriminator] = 'NestedCollectionBase')
-ORDER BY [b].[Id]",
+) AS [b0] ON [n0].[ParentReferenceId] = [b0].[Id]
+WHERE ([n0].[Discriminator] = 'NestedCollectionDerived') OR ([n0].[Discriminator] = 'NestedCollectionBase')
+ORDER BY [b0].[Id]",
                 Sql);
         }
 
@@ -806,20 +806,20 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
-FROM [BaseCollectionOnBase] AS [b]
+SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name], [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
+FROM [BaseCollectionOnBase] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-) AS [e] ON [b].[BaseParentId] = [e].[Id]
+) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
 LEFT JOIN (
     SELECT [n].*
     FROM [NestedReferenceBase] AS [n]
     WHERE ([n].[Discriminator] = 'NestedReferenceDerived') OR ([n].[Discriminator] = 'NestedReferenceBase')
-) AS [n] ON [n].[ParentCollectionId] = [b].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-ORDER BY [e].[Id]",
+) AS [n] ON [n].[ParentCollectionId] = [b0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
@@ -881,30 +881,30 @@ FROM [BaseInheritanceRelationshipEntity] AS [e]
 WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
 ORDER BY [e].[Id]
 
-SELECT [b].[Id], [b].[BaseParentId], [b].[Discriminator], [b].[Name]
-FROM [BaseCollectionOnBase] AS [b]
+SELECT [b0].[Id], [b0].[BaseParentId], [b0].[Discriminator], [b0].[Name]
+FROM [BaseCollectionOnBase] AS [b0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [BaseInheritanceRelationshipEntity] AS [e]
     WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-) AS [e] ON [b].[BaseParentId] = [e].[Id]
-WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-ORDER BY [e].[Id], [b].[Id]
+) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
+WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+ORDER BY [e0].[Id], [b0].[Id]
 
-SELECT [n].[Id], [n].[Discriminator], [n].[Name], [n].[ParentCollectionId], [n].[ParentReferenceId]
-FROM [NestedCollectionBase] AS [n]
+SELECT [n0].[Id], [n0].[Discriminator], [n0].[Name], [n0].[ParentCollectionId], [n0].[ParentReferenceId]
+FROM [NestedCollectionBase] AS [n0]
 INNER JOIN (
-    SELECT DISTINCT [e].[Id], [b].[Id] AS [Id0]
-    FROM [BaseCollectionOnBase] AS [b]
+    SELECT DISTINCT [e0].[Id], [b0].[Id] AS [Id0]
+    FROM [BaseCollectionOnBase] AS [b0]
     INNER JOIN (
         SELECT DISTINCT [e].[Id]
         FROM [BaseInheritanceRelationshipEntity] AS [e]
         WHERE [e].[Discriminator] IN ('DerivedInheritanceRelationshipEntity', 'BaseInheritanceRelationshipEntity')
-    ) AS [e] ON [b].[BaseParentId] = [e].[Id]
-    WHERE ([b].[Discriminator] = 'DerivedCollectionOnBase') OR ([b].[Discriminator] = 'BaseCollectionOnBase')
-) AS [b] ON [n].[ParentCollectionId] = [b].[Id0]
-WHERE ([n].[Discriminator] = 'NestedCollectionDerived') OR ([n].[Discriminator] = 'NestedCollectionBase')
-ORDER BY [b].[Id], [b].[Id0]",
+    ) AS [e0] ON [b0].[BaseParentId] = [e0].[Id]
+    WHERE ([b0].[Discriminator] = 'DerivedCollectionOnBase') OR ([b0].[Discriminator] = 'BaseCollectionOnBase')
+) AS [b00] ON [n0].[ParentCollectionId] = [b00].[Id0]
+WHERE ([n0].[Discriminator] = 'NestedCollectionDerived') OR ([n0].[Discriminator] = 'NestedCollectionBase')
+ORDER BY [b00].[Id], [b00].[Id0]",
                 Sql);
         }
 
@@ -965,14 +965,14 @@ public override void Nested_include_collection_reference_on_non_entity_base()
 FROM [ReferencedEntity] AS [e]
 ORDER BY [e].[Id]
 
-SELECT [p].[Id], [p].[Name], [p].[ReferenceId], [p].[ReferencedEntityId], [r].[Id], [r].[Name]
-FROM [PrincipalEntity] AS [p]
+SELECT [p0].[Id], [p0].[Name], [p0].[ReferenceId], [p0].[ReferencedEntityId], [r].[Id], [r].[Name]
+FROM [PrincipalEntity] AS [p0]
 INNER JOIN (
     SELECT DISTINCT [e].[Id]
     FROM [ReferencedEntity] AS [e]
-) AS [e] ON [p].[ReferencedEntityId] = [e].[Id]
-LEFT JOIN [ReferencedEntity] AS [r] ON [p].[ReferenceId] = [r].[Id]
-ORDER BY [e].[Id]",
+) AS [e0] ON [p0].[ReferencedEntityId] = [e0].[Id]
+LEFT JOIN [ReferencedEntity] AS [r] ON [p0].[ReferenceId] = [r].[Id]
+ORDER BY [e0].[Id]",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceSqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceSqlServerTest.cs
index 1325b5cbcad..1fac7b0630d 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceSqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/InheritanceSqlServerTest.cs
@@ -13,13 +13,13 @@ public override void Can_use_of_type_animal()
             base.Can_use_of_type_animal();
 
             Assert.Equal(
-                @"SELECT [t0].[Species], [t0].[CountryId], [t0].[Discriminator], [t0].[Name], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t0].[FoundOn]
+                @"SELECT [t].[Species], [t].[CountryId], [t].[Discriminator], [t].[Name], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t].[FoundOn]
 FROM (
-    SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-    FROM [Animal] AS [a]
-    WHERE [a].[Discriminator] IN ('Kiwi', 'Eagle')
-) AS [t0]
-ORDER BY [t0].[Species]",
+    SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+    FROM [Animal] AS [a0]
+    WHERE [a0].[Discriminator] IN ('Kiwi', 'Eagle')
+) AS [t]
+ORDER BY [t].[Species]",
                 Sql);
         }
 
@@ -28,13 +28,13 @@ public override void Can_use_of_type_bird()
             base.Can_use_of_type_bird();
 
             Assert.Equal(
-                @"SELECT [t0].[Species], [t0].[CountryId], [t0].[Discriminator], [t0].[Name], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t0].[FoundOn]
+                @"SELECT [t].[Species], [t].[CountryId], [t].[Discriminator], [t].[Name], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t].[FoundOn]
 FROM (
-    SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-    FROM [Animal] AS [a]
-    WHERE [a].[Discriminator] IN ('Kiwi', 'Eagle')
-) AS [t0]
-ORDER BY [t0].[Species]",
+    SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+    FROM [Animal] AS [a0]
+    WHERE [a0].[Discriminator] IN ('Kiwi', 'Eagle')
+) AS [t]
+ORDER BY [t].[Species]",
                 Sql);
         }
 
@@ -43,13 +43,13 @@ public override void Can_use_of_type_bird_predicate()
             base.Can_use_of_type_bird_predicate();
 
             Assert.Equal(
-                @"SELECT [t0].[Species], [t0].[CountryId], [t0].[Discriminator], [t0].[Name], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t0].[FoundOn]
+                @"SELECT [t].[Species], [t].[CountryId], [t].[Discriminator], [t].[Name], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t].[FoundOn]
 FROM (
-    SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-    FROM [Animal] AS [a]
-    WHERE [a].[Discriminator] IN ('Kiwi', 'Eagle') AND ([a].[CountryId] = 1)
-) AS [t0]
-ORDER BY [t0].[Species]",
+    SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+    FROM [Animal] AS [a0]
+    WHERE [a0].[Discriminator] IN ('Kiwi', 'Eagle') AND ([a0].[CountryId] = 1)
+) AS [t]
+ORDER BY [t].[Species]",
                 Sql);
         }
 
@@ -58,12 +58,12 @@ public override void Can_use_of_type_bird_with_projection()
             base.Can_use_of_type_bird_with_projection();
 
             Assert.Equal(
-                @"SELECT [t0].[EagleId]
+                @"SELECT [t].[EagleId]
 FROM (
-    SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-    FROM [Animal] AS [a]
-    WHERE [a].[Discriminator] IN ('Kiwi', 'Eagle')
-) AS [t0]",
+    SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+    FROM [Animal] AS [a0]
+    WHERE [a0].[Discriminator] IN ('Kiwi', 'Eagle')
+) AS [t]",
                 Sql);
         }
 
@@ -72,13 +72,13 @@ public override void Can_use_of_type_bird_first()
             base.Can_use_of_type_bird_first();
 
             Assert.Equal(
-                @"SELECT TOP(1) [t0].[Species], [t0].[CountryId], [t0].[Discriminator], [t0].[Name], [t0].[EagleId], [t0].[IsFlightless], [t0].[Group], [t0].[FoundOn]
+                @"SELECT TOP(1) [t].[Species], [t].[CountryId], [t].[Discriminator], [t].[Name], [t].[EagleId], [t].[IsFlightless], [t].[Group], [t].[FoundOn]
 FROM (
-    SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-    FROM [Animal] AS [a]
-    WHERE [a].[Discriminator] IN ('Kiwi', 'Eagle')
-) AS [t0]
-ORDER BY [t0].[Species]",
+    SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+    FROM [Animal] AS [a0]
+    WHERE [a0].[Discriminator] IN ('Kiwi', 'Eagle')
+) AS [t]
+ORDER BY [t].[Species]",
                 Sql);
         }
 
@@ -185,16 +185,16 @@ FROM [Animal] AS [e]
 WHERE [e].[Discriminator] = 'Eagle'
 ORDER BY [e].[Species]
 
-SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-FROM [Animal] AS [a]
+SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+FROM [Animal] AS [a0]
 INNER JOIN (
     SELECT DISTINCT TOP(2) [e].[Species]
     FROM [Animal] AS [e]
     WHERE [e].[Discriminator] = 'Eagle'
     ORDER BY [e].[Species]
-) AS [e] ON [a].[EagleId] = [e].[Species]
-WHERE ([a].[Discriminator] = 'Kiwi') OR ([a].[Discriminator] = 'Eagle')
-ORDER BY [e].[Species]",
+) AS [e0] ON [a0].[EagleId] = [e0].[Species]
+WHERE ([a0].[Discriminator] = 'Kiwi') OR ([a0].[Discriminator] = 'Eagle')
+ORDER BY [e0].[Species]",
                 Sql);
         }
 
@@ -207,14 +207,14 @@ public override void Can_include_animals()
 FROM [Country] AS [c]
 ORDER BY [c].[Name], [c].[Id]
 
-SELECT [a].[Species], [a].[CountryId], [a].[Discriminator], [a].[Name], [a].[EagleId], [a].[IsFlightless], [a].[Group], [a].[FoundOn]
-FROM [Animal] AS [a]
+SELECT [a0].[Species], [a0].[CountryId], [a0].[Discriminator], [a0].[Name], [a0].[EagleId], [a0].[IsFlightless], [a0].[Group], [a0].[FoundOn]
+FROM [Animal] AS [a0]
 INNER JOIN (
     SELECT DISTINCT [c].[Name], [c].[Id]
     FROM [Country] AS [c]
-) AS [c] ON [a].[CountryId] = [c].[Id]
-WHERE ([a].[Discriminator] = 'Kiwi') OR ([a].[Discriminator] = 'Eagle')
-ORDER BY [c].[Name], [c].[Id]",
+) AS [c0] ON [a0].[CountryId] = [c0].[Id]
+WHERE ([a0].[Discriminator] = 'Kiwi') OR ([a0].[Discriminator] = 'Eagle')
+ORDER BY [c0].[Name], [c0].[Id]",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryBugsTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryBugsTest.cs
index 7aa9bc48985..02a501a997c 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryBugsTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryBugsTest.cs
@@ -147,13 +147,13 @@ public void Include_on_entity_with_composite_key_One_To_Many_bugs_925_926()
 FROM [Customer] AS [c]
 ORDER BY [c].[FirstName], [c].[LastName]
 
-SELECT [o].[Id], [o].[CustomerFirstName], [o].[CustomerLastName], [o].[Name]
-FROM [Order] AS [o]
+SELECT [o0].[Id], [o0].[CustomerFirstName], [o0].[CustomerLastName], [o0].[Name]
+FROM [Order] AS [o0]
 INNER JOIN (
     SELECT DISTINCT [c].[FirstName], [c].[LastName]
     FROM [Customer] AS [c]
-) AS [c] ON ([o].[CustomerFirstName] = [c].[FirstName]) AND ([o].[CustomerLastName] = [c].[LastName])
-ORDER BY [c].[FirstName], [c].[LastName]";
+) AS [c0] ON ([o0].[CustomerFirstName] = [c0].[FirstName]) AND ([o0].[CustomerLastName] = [c0].[LastName])
+ORDER BY [c0].[FirstName], [c0].[LastName]";
 
                 Assert.Equal(expectedSql, TestSqlLoggerFactory.Sql);
             }
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryLoggingSqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryLoggingSqlServerTest.cs
index 63685993f00..61d21bbd0f0 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryLoggingSqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryLoggingSqlServerTest.cs
@@ -92,13 +92,13 @@ ORDER BY [c].[CustomerID]
             relatedValueBuffers: IEnumerable<ValueBuffer> _Query(
                 queryContext: queryContext, 
                 shaperCommandContext: SelectExpression: 
-                    SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-                    FROM [Orders] AS [o]
+                    SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+                    FROM [Orders] AS [o0]
                     INNER JOIN (
                         SELECT DISTINCT [c].[CustomerID]
                         FROM [Customers] AS [c]
-                    ) AS [c] ON [o].[CustomerID] = [c].[CustomerID]
-                    ORDER BY [c].[CustomerID]
+                    ) AS [c0] ON [o0].[CustomerID] = [c0].[CustomerID]
+                    ORDER BY [c0].[CustomerID]
                 , 
                 queryIndex: 1
             )
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryNavigationsSqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryNavigationsSqlServerTest.cs
index c61cd0ac6d3..8532ae5825a 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryNavigationsSqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QueryNavigationsSqlServerTest.cs
@@ -249,23 +249,23 @@ FROM [Orders] AS [o]
 INNER JOIN [Customers] AS [o.Customer] ON [o].[CustomerID] = [o.Customer].[CustomerID]
 WHERE [o].[CustomerID] = 'ALFKI'
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]",
+SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+FROM [Orders] AS [o0]",
                 Sql);
         }
 
@@ -278,8 +278,8 @@ public override void Collection_select_nav_prop_any()
     SELECT CASE
         WHEN EXISTS (
             SELECT 1
-            FROM [Orders] AS [o]
-            WHERE [c].[CustomerID] = [o].[CustomerID])
+            FROM [Orders] AS [o0]
+            WHERE [c].[CustomerID] = [o0].[CustomerID])
         THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
     END
 )
@@ -324,8 +324,8 @@ public override void Collection_select_nav_prop_all()
     SELECT CASE
         WHEN NOT EXISTS (
             SELECT 1
-            FROM [Orders] AS [o]
-            WHERE (([c].[CustomerID] = [o].[CustomerID]) AND [o].[CustomerID] IS NOT NULL) AND NOT (([o].[CustomerID] = 'ALFKI') AND [o].[CustomerID] IS NOT NULL))
+            FROM [Orders] AS [o0]
+            WHERE (([c].[CustomerID] = [o0].[CustomerID]) AND [o0].[CustomerID] IS NOT NULL) AND NOT (([o0].[CustomerID] = 'ALFKI') AND [o0].[CustomerID] IS NOT NULL))
         THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
     END
 )
@@ -341,8 +341,8 @@ public override void Collection_select_nav_prop_all_client()
                 @"SELECT [c].[CustomerID]
 FROM [Customers] AS [c]
 
-SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-FROM [Orders] AS [o]",
+SELECT [o1].[OrderID], [o1].[CustomerID], [o1].[EmployeeID], [o1].[OrderDate]
+FROM [Orders] AS [o1]",
                 Sql);
         }
 
@@ -380,8 +380,8 @@ public override void Collection_select_nav_prop_count()
             Assert.Equal(
                 @"SELECT (
     SELECT COUNT(*)
-    FROM [Orders] AS [o]
-    WHERE [c].[CustomerID] = [o].[CustomerID]
+    FROM [Orders] AS [o0]
+    WHERE [c].[CustomerID] = [o0].[CustomerID]
 )
 FROM [Customers] AS [c]",
                 Sql);
@@ -439,8 +439,8 @@ public override void Collection_select_nav_prop_long_count()
             Assert.Equal(
                 @"SELECT (
     SELECT COUNT_BIG(*)
-    FROM [Orders] AS [o]
-    WHERE [c].[CustomerID] = [o].[CustomerID]
+    FROM [Orders] AS [o0]
+    WHERE [c].[CustomerID] = [o0].[CustomerID]
 )
 FROM [Customers] AS [c]",
                 Sql);
@@ -453,14 +453,14 @@ public override void Select_multiple_complex_projections()
             Assert.Equal(
                 @"SELECT (
     SELECT COUNT(*)
-    FROM [Order Details] AS [o]
-    WHERE [o].[OrderID] = [o].[OrderID]
+    FROM [Order Details] AS [o2]
+    WHERE [o].[OrderID] = [o2].[OrderID]
 ), (
     SELECT CASE
         WHEN EXISTS (
             SELECT 1
-            FROM [Order Details] AS [od]
-            WHERE ([od].[UnitPrice] > 10) AND ([o].[OrderID] = [od].[OrderID]))
+            FROM [Order Details] AS [od1]
+            WHERE ([od1].[UnitPrice] > 10) AND ([o].[OrderID] = [od1].[OrderID]))
         THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
     END
 ), CASE
@@ -470,14 +470,14 @@ THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
     SELECT CASE
         WHEN NOT EXISTS (
             SELECT 1
-            FROM [Order Details] AS [od]
-            WHERE ([o].[OrderID] = [od].[OrderID]) AND ([od].[OrderID] <> 42))
+            FROM [Order Details] AS [od2]
+            WHERE ([o].[OrderID] = [od2].[OrderID]) AND ([od2].[OrderID] <> 42))
         THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
     END
 ), (
     SELECT COUNT_BIG(*)
-    FROM [Order Details] AS [o]
-    WHERE [o].[OrderID] = [o].[OrderID]
+    FROM [Order Details] AS [o3]
+    WHERE [o].[OrderID] = [o3].[OrderID]
 ), [o].[OrderDate]
 FROM [Orders] AS [o]
 WHERE [o].[CustomerID] LIKE 'A' + '%'",
@@ -490,9 +490,9 @@ public override void Collection_select_nav_prop_sum()
 
             Assert.Equal(
                 @"SELECT (
-    SELECT SUM([o].[OrderID])
-    FROM [Orders] AS [o]
-    WHERE [c].[CustomerID] = [o].[CustomerID]
+    SELECT SUM([o0].[OrderID])
+    FROM [Orders] AS [o0]
+    WHERE [c].[CustomerID] = [o0].[CustomerID]
 )
 FROM [Customers] AS [c]",
                 Sql);
@@ -603,12 +603,12 @@ SELECT 1
         SELECT [o].[OrderID], [o].[ProductID]
         FROM [Order Details] AS [o]
         WHERE [p].[ProductID] = [o].[ProductID]
-    ) AS [t]
+    ) AS [t00]
     INNER JOIN (
         SELECT TOP(1) [orderDetail].[OrderID], [orderDetail].[ProductID]
         FROM [Order Details] AS [orderDetail]
         WHERE [orderDetail].[Quantity] = 1
-    ) AS [t0] ON ([t].[OrderID] = [t0].[OrderID]) AND ([t].[ProductID] = [t0].[ProductID]))",
+    ) AS [t1] ON ([t00].[OrderID] = [t1].[OrderID]) AND ([t00].[ProductID] = [t1].[ProductID]))",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QuerySqlServerTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QuerySqlServerTest.cs
index 0194e73dfbd..40b4736ee75 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QuerySqlServerTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/QuerySqlServerTest.cs
@@ -28,39 +28,39 @@ public override void Default_if_empty_top_level()
             base.Default_if_empty_top_level();
 
             Assert.Equal(
-                @"SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title]
+                @"SELECT [t].[EmployeeID], [t].[City], [t].[Country], [t].[FirstName], [t].[ReportsTo], [t].[Title]
 FROM (
     SELECT NULL AS [empty]
-) AS [empty]
+) AS [empty0]
 LEFT JOIN (
     SELECT [c].[EmployeeID], [c].[City], [c].[Country], [c].[FirstName], [c].[ReportsTo], [c].[Title]
     FROM [Employees] AS [c]
     WHERE [c].[EmployeeID] = -1
-) AS [t0] ON 1 = 1",
+) AS [t] ON 1 = 1",
                 Sql);
         }
 
         public override void Default_if_empty_top_level_positive()
         {
             base.Default_if_empty_top_level_positive();
-            
+
             Assert.Equal(
-                @"SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title]
+                @"SELECT [t].[EmployeeID], [t].[City], [t].[Country], [t].[FirstName], [t].[ReportsTo], [t].[Title]
 FROM (
     SELECT NULL AS [empty]
-) AS [empty]
+) AS [empty0]
 LEFT JOIN (
     SELECT [c].[EmployeeID], [c].[City], [c].[Country], [c].[FirstName], [c].[ReportsTo], [c].[Title]
     FROM [Employees] AS [c]
     WHERE [c].[EmployeeID] > 0
-) AS [t0] ON 1 = 1",
+) AS [t] ON 1 = 1",
                 Sql);
         }
 
         public override void Default_if_empty_top_level_arg()
         {
             base.Default_if_empty_top_level_arg();
-            
+
             Assert.Equal(
                 @"SELECT [c].[EmployeeID], [c].[City], [c].[Country], [c].[FirstName], [c].[ReportsTo], [c].[Title]
 FROM [Employees] AS [c]
@@ -73,15 +73,15 @@ public override void Default_if_empty_top_level_projection()
             base.Default_if_empty_top_level_projection();
 
             Assert.Equal(
-                @"SELECT [t0].[EmployeeID]
+                @"SELECT [t].[EmployeeID]
 FROM (
     SELECT NULL AS [empty]
-) AS [empty]
+) AS [empty0]
 LEFT JOIN (
     SELECT [e].[EmployeeID]
     FROM [Employees] AS [e]
     WHERE [e].[EmployeeID] = -1
-) AS [t0] ON 1 = 1",
+) AS [t] ON 1 = 1",
                 Sql);
         }
 
@@ -194,11 +194,11 @@ public override void Select_Where_Subquery_Deep_Single()
                 @"SELECT [od].[OrderID], [od].[ProductID], [od].[Discount], [od].[Quantity], [od].[UnitPrice]
 FROM [Order Details] AS [od]
 
-SELECT [o].[OrderID], [o].[CustomerID]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID]
+FROM [Orders] AS [o0]
 
-SELECT [c].[CustomerID], [c].[City]
-FROM [Customers] AS [c]",
+SELECT [c0].[CustomerID], [c0].[City]
+FROM [Customers] AS [c0]",
                 Sql);
         }
 
@@ -210,11 +210,11 @@ public override void Select_Where_Subquery_Deep_First()
                 @"SELECT [od].[OrderID], [od].[ProductID], [od].[Discount], [od].[Quantity], [od].[UnitPrice]
 FROM [Order Details] AS [od]
 
-SELECT [o].[OrderID], [o].[CustomerID]
-FROM [Orders] AS [o]
+SELECT [o0].[OrderID], [o0].[CustomerID]
+FROM [Orders] AS [o0]
 
-SELECT [c].[CustomerID], [c].[City]
-FROM [Customers] AS [c]",
+SELECT [c0].[CustomerID], [c0].[City]
+FROM [Customers] AS [c0]",
                 Sql);
         }
 
@@ -225,15 +225,15 @@ public override void Where_subquery_anon()
             Assert.Equal(
                 @"@__p_0: 9
 
-SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate]
+SELECT [t].[EmployeeID], [t].[City], [t].[Country], [t].[FirstName], [t].[ReportsTo], [t].[Title], [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate]
 FROM (
-    SELECT TOP(@__p_0) [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
-    FROM [Employees] AS [e]
-) AS [t0]
+    SELECT TOP(@__p_0) [e0].[EmployeeID], [e0].[City], [e0].[Country], [e0].[FirstName], [e0].[ReportsTo], [e0].[Title]
+    FROM [Employees] AS [e0]
+) AS [t]
 CROSS JOIN (
-    SELECT TOP(1000) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-) AS [t1]",
+    SELECT TOP(1000) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+) AS [t0]",
                 Sql);
         }
 
@@ -826,7 +826,7 @@ public override void Distinct_Count()
 FROM (
     SELECT DISTINCT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
     FROM [Customers] AS [c]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -840,7 +840,7 @@ public override void Select_Distinct_Count()
 FROM (
     SELECT DISTINCT [c].[City]
     FROM [Customers] AS [c]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -939,13 +939,13 @@ public override void Take_Skip()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].*
+SELECT [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
     FROM [Customers] AS [c]
     ORDER BY [c].[ContactName]
-) AS [t0]
-ORDER BY [t0].[ContactName]
+) AS [t]
+ORDER BY [t].[ContactName]
 OFFSET @__p_1 ROWS",
                 Sql);
         }
@@ -960,17 +960,17 @@ public override void Take_Skip_Distinct()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t0].*
+    SELECT [t].*
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
         FROM [Customers] AS [c]
         ORDER BY [c].[ContactName]
-    ) AS [t0]
-    ORDER BY [t0].[ContactName]
+    ) AS [t]
+    ORDER BY [t].[ContactName]
     OFFSET @__p_1 ROWS
-) AS [t1]",
+) AS [t0]",
                 Sql);
         }
 
@@ -984,32 +984,32 @@ public override void Take_Skip_Distinct_Caching()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t0].*
+    SELECT [t].*
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
         FROM [Customers] AS [c]
         ORDER BY [c].[ContactName]
-    ) AS [t0]
-    ORDER BY [t0].[ContactName]
+    ) AS [t]
+    ORDER BY [t].[ContactName]
     OFFSET @__p_1 ROWS
-) AS [t1]
+) AS [t0]
 
 @__p_0: 15
 @__p_1: 10
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t0].*
+    SELECT [t].*
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
         FROM [Customers] AS [c]
         ORDER BY [c].[ContactName]
-    ) AS [t0]
-    ORDER BY [t0].[ContactName]
+    ) AS [t]
+    ORDER BY [t].[ContactName]
     OFFSET @__p_1 ROWS
-) AS [t1]",
+) AS [t0]",
                 Sql);
         }
 
@@ -1029,7 +1029,7 @@ SELECT COUNT(*)
 FROM (
     SELECT DISTINCT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
     FROM [Orders] AS [o]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -1045,7 +1045,7 @@ SELECT COUNT(*)
     SELECT DISTINCT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
     FROM [Orders] AS [o]
     WHERE [o].[CustomerID] = 'FRANK'
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -1086,11 +1086,11 @@ public override void Queryable_simple_anonymous_projection_subquery()
             Assert.Equal(
                 @"@__p_0: 91
 
-SELECT [t0].[City]
+SELECT [t].[City]
 FROM (
-    SELECT TOP(@__p_0) [c].*
-    FROM [Customers] AS [c]
-) AS [t0]",
+    SELECT TOP(@__p_0) [c0].*
+    FROM [Customers] AS [c0]
+) AS [t]",
                 Sql);
         }
 
@@ -1152,12 +1152,12 @@ public override void Take_subquery_projection()
             Assert.Equal(
                 @"@__p_0: 2
 
-SELECT [t0].[City]
+SELECT [t].[City]
 FROM (
-    SELECT TOP(@__p_0) [c].*
-    FROM [Customers] AS [c]
-    ORDER BY [c].[CustomerID]
-) AS [t0]",
+    SELECT TOP(@__p_0) [c0].*
+    FROM [Customers] AS [c0]
+    ORDER BY [c0].[CustomerID]
+) AS [t]",
                 Sql);
         }
 
@@ -1173,7 +1173,7 @@ SELECT COUNT(*)
     SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
     FROM [Orders] AS [o]
     ORDER BY [o].[OrderID]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -1186,9 +1186,9 @@ public override void Take_OrderBy_Count()
 
 SELECT COUNT(*)
 FROM (
-    SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-) AS [t0]",
+    SELECT TOP(@__p_0) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+) AS [t]",
                 Sql);
         }
 
@@ -1400,11 +1400,11 @@ public override void Select_scalar_primitive_after_take()
             Assert.Equal(
                 @"@__p_0: 9
 
-SELECT [t0].[EmployeeID]
+SELECT [t].[EmployeeID]
 FROM (
-    SELECT TOP(@__p_0) [e].*
-    FROM [Employees] AS [e]
-) AS [t0]",
+    SELECT TOP(@__p_0) [e0].*
+    FROM [Employees] AS [e0]
+) AS [t]",
                 Sql);
         }
 
@@ -2053,14 +2053,11 @@ public override void SelectMany_mixed()
         {
             base.SelectMany_mixed();
 
-            Assert.Equal(3763, Sql.Replace("\r","").Replace("\n","").Length); // new-line insensitive assertion
+            Assert.Equal(3763, Sql.Replace("\r", "").Replace("\n", "").Length); // new-line insensitive assertion
             Assert.StartsWith(
                 @"SELECT [e1].[EmployeeID], [e1].[City], [e1].[Country], [e1].[FirstName], [e1].[ReportsTo], [e1].[Title]
 FROM [Employees] AS [e1]
 
-SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-FROM [Customers] AS [c]
-
 SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
 FROM [Customers] AS [c]",
                 Sql);
@@ -2073,11 +2070,11 @@ public override void SelectMany_simple_subquery()
             Assert.Equal(
                 @"@__p_0: 9
 
-SELECT [t0].[EmployeeID], [t0].[City], [t0].[Country], [t0].[FirstName], [t0].[ReportsTo], [t0].[Title], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
+SELECT [t].[EmployeeID], [t].[City], [t].[Country], [t].[FirstName], [t].[ReportsTo], [t].[Title], [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
 FROM (
-    SELECT TOP(@__p_0) [e].[EmployeeID], [e].[City], [e].[Country], [e].[FirstName], [e].[ReportsTo], [e].[Title]
-    FROM [Employees] AS [e]
-) AS [t0]
+    SELECT TOP(@__p_0) [e0].[EmployeeID], [e0].[City], [e0].[Country], [e0].[FirstName], [e0].[ReportsTo], [e0].[Title]
+    FROM [Employees] AS [e0]
+) AS [t]
 CROSS JOIN [Customers] AS [c]",
                 Sql);
         }
@@ -2296,14 +2293,14 @@ public override void Join_customers_orders_with_subquery_with_take()
             Assert.Equal(
                 @"@__p_0: 5
 
-SELECT [c].[ContactName], [t0].[OrderID]
+SELECT [c].[ContactName], [t].[OrderID]
 FROM [Customers] AS [c]
 INNER JOIN (
-    SELECT TOP(@__p_0) [o2].*
-    FROM [Orders] AS [o2]
-    ORDER BY [o2].[OrderID]
-) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID]
-WHERE [t0].[CustomerID] = 'ALFKI'",
+    SELECT TOP(@__p_0) [o20].*
+    FROM [Orders] AS [o20]
+    ORDER BY [o20].[OrderID]
+) AS [t] ON [c].[CustomerID] = [t].[CustomerID]
+WHERE [t].[CustomerID] = 'ALFKI'",
                 Sql);
         }
 
@@ -2359,15 +2356,15 @@ public override void Join_customers_orders_with_subquery_predicate_with_take()
             Assert.Equal(
                 @"@__p_0: 5
 
-SELECT [c].[ContactName], [t0].[OrderID]
+SELECT [c].[ContactName], [t].[OrderID]
 FROM [Customers] AS [c]
 INNER JOIN (
-    SELECT TOP(@__p_0) [o2].*
-    FROM [Orders] AS [o2]
-    WHERE [o2].[OrderID] > 0
-    ORDER BY [o2].[OrderID]
-) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID]
-WHERE [t0].[CustomerID] = 'ALFKI'",
+    SELECT TOP(@__p_0) [o20].*
+    FROM [Orders] AS [o20]
+    WHERE [o20].[OrderID] > 0
+    ORDER BY [o20].[OrderID]
+) AS [t] ON [c].[CustomerID] = [t].[CustomerID]
+WHERE [t].[CustomerID] = 'ALFKI'",
                 Sql);
         }
 
@@ -2575,11 +2572,11 @@ public override void GroupJoin_DefaultIfEmpty3()
 
 SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
 FROM (
-    SELECT TOP(@__p_0) [c].*
-    FROM [Customers] AS [c]
-) AS [t0]
-LEFT JOIN [Orders] AS [o] ON [t0].[CustomerID] = [o].[CustomerID]
-ORDER BY [t0].[CustomerID]",
+    SELECT TOP(@__p_0) [c0].*
+    FROM [Customers] AS [c0]
+) AS [t]
+LEFT JOIN [Orders] AS [o] ON [t].[CustomerID] = [o].[CustomerID]
+ORDER BY [t].[CustomerID]",
                 Sql);
         }
 
@@ -2626,13 +2623,13 @@ public override void GroupJoin_simple_subquery()
             Assert.Equal(
                 @"@__p_0: 4
 
-SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate]
+SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate]
 FROM [Customers] AS [c]
 LEFT JOIN (
-    SELECT TOP(@__p_0) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    ORDER BY [o].[OrderID]
-) AS [t0] ON [c].[CustomerID] = [t0].[CustomerID]
+    SELECT TOP(@__p_0) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+    ORDER BY [o0].[OrderID]
+) AS [t] ON [c].[CustomerID] = [t].[CustomerID]
 ORDER BY [c].[CustomerID]",
                 Sql);
         }
@@ -2657,15 +2654,15 @@ public override void SelectMany_Joined_DefaultIfEmpty()
                 @"SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [c].[ContactName]
 FROM [Customers] AS [c]
 CROSS APPLY (
-    SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate]
+    SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate]
     FROM (
         SELECT NULL AS [empty]
-    ) AS [empty]
+    ) AS [empty0]
     LEFT JOIN (
-        SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-        FROM [Orders] AS [o]
-        WHERE [o].[CustomerID] = [c].[CustomerID]
-    ) AS [t0] ON 1 = 1
+        SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+        FROM [Orders] AS [o0]
+        WHERE [o0].[CustomerID] = [c].[CustomerID]
+    ) AS [t] ON 1 = 1
 ) AS [t1]",
                 Sql);
         }
@@ -2678,15 +2675,15 @@ public override void SelectMany_Joined_DefaultIfEmpty2()
                 @"SELECT [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate]
 FROM [Customers] AS [c]
 CROSS APPLY (
-    SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate]
+    SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate]
     FROM (
         SELECT NULL AS [empty]
-    ) AS [empty]
+    ) AS [empty0]
     LEFT JOIN (
-        SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-        FROM [Orders] AS [o]
-        WHERE [o].[CustomerID] = [c].[CustomerID]
-    ) AS [t0] ON 1 = 1
+        SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+        FROM [Orders] AS [o0]
+        WHERE [o0].[CustomerID] = [c].[CustomerID]
+    ) AS [t] ON 1 = 1
 ) AS [t1]",
                 Sql);
         }
@@ -2696,13 +2693,13 @@ public override void SelectMany_Joined_Take()
             base.SelectMany_Joined_Take();
 
             Assert.Equal(
-                @"SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate], [c].[ContactName]
+                @"SELECT [t].[OrderID], [t].[CustomerID], [t].[EmployeeID], [t].[OrderDate], [c].[ContactName]
 FROM [Customers] AS [c]
 CROSS APPLY (
-    SELECT TOP(1000) [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-    WHERE [o].[CustomerID] = [c].[CustomerID]
-) AS [t0]",
+    SELECT TOP(1000) [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+    WHERE [o0].[CustomerID] = [c].[CustomerID]
+) AS [t]",
                 Sql);
         }
 
@@ -2713,12 +2710,12 @@ public override void Take_with_single()
             Assert.Equal(
                 @"@__p_0: 1
 
-SELECT TOP(2) [t0].*
+SELECT TOP(2) [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
     FROM [Customers] AS [c]
     ORDER BY [c].[CustomerID]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -2729,13 +2726,13 @@ public override void Take_with_single_select_many()
             Assert.Equal(
                 @"@__p_0: 1
 
-SELECT TOP(2) [t0].*
+SELECT TOP(2) [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], [o].[OrderID], [o].[CustomerID] AS [c0], [o].[EmployeeID], [o].[OrderDate]
     FROM [Customers] AS [c]
     CROSS JOIN [Orders] AS [o]
     ORDER BY [c].[CustomerID], [o].[OrderID]
-) AS [t0]",
+) AS [t]",
                 Sql);
         }
 
@@ -2846,12 +2843,12 @@ public override void Distinct_OrderBy()
             base.Distinct_OrderBy();
 
             Assert.Equal(
-                @"SELECT [t0].[Country]
+                @"SELECT [t].[Country]
 FROM (
-    SELECT DISTINCT [c].[Country]
-    FROM [Customers] AS [c]
-) AS [t0]
-ORDER BY [t0].[Country]",
+    SELECT DISTINCT [c0].[Country]
+    FROM [Customers] AS [c0]
+) AS [t]
+ORDER BY [t].[Country]",
                 Sql);
         }
 
@@ -2860,12 +2857,12 @@ public override void Distinct_OrderBy2()
             base.Distinct_OrderBy2();
 
             Assert.Equal(
-                @"SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
+                @"SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region]
 FROM (
-    SELECT DISTINCT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-    FROM [Customers] AS [c]
-) AS [t0]
-ORDER BY [t0].[CustomerID]",
+    SELECT DISTINCT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+    FROM [Customers] AS [c0]
+) AS [t]
+ORDER BY [t].[CustomerID]",
                 Sql);
         }
 
@@ -2874,12 +2871,12 @@ public override void Distinct_OrderBy3()
             base.Distinct_OrderBy3();
 
             Assert.Equal(
-                @"SELECT [t0].[CustomerID]
+                @"SELECT [t].[CustomerID]
 FROM (
-    SELECT DISTINCT [c].[CustomerID]
-    FROM [Customers] AS [c]
-) AS [t0]
-ORDER BY [t0].[CustomerID]",
+    SELECT DISTINCT [c0].[CustomerID]
+    FROM [Customers] AS [c0]
+) AS [t]
+ORDER BY [t].[CustomerID]",
                 Sql);
         }
 
@@ -3049,12 +3046,12 @@ public override void Where_primitive()
             Assert.Equal(
                 @"@__p_0: 9
 
-SELECT [t0].[EmployeeID]
+SELECT [t].[EmployeeID]
 FROM (
-    SELECT TOP(@__p_0) [e].[EmployeeID]
-    FROM [Employees] AS [e]
-) AS [t0]
-WHERE [t0].[EmployeeID] = 5",
+    SELECT TOP(@__p_0) [e0].[EmployeeID]
+    FROM [Employees] AS [e0]
+) AS [t]
+WHERE [t].[EmployeeID] = 5",
                 Sql);
         }
 
@@ -3743,8 +3740,8 @@ SELECT 1
 FROM [Customers] AS [c]
 ORDER BY [c].[CustomerID]
 
-SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
-FROM [Customers] AS [c]",
+SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region]
+FROM [Customers] AS [c0]",
                  Sql);
         }
 
@@ -4227,11 +4224,11 @@ public override void OfType_Select()
             Assert.Equal(
                 @"SELECT TOP(1) [o.Customer].[City]
 FROM (
-    SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-    FROM [Orders] AS [o]
-) AS [t0]
-INNER JOIN [Customers] AS [o.Customer] ON [t0].[CustomerID] = [o.Customer].[CustomerID]
-ORDER BY [t0].[OrderID]",
+    SELECT [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate]
+    FROM [Orders] AS [o0]
+) AS [t]
+INNER JOIN [Customers] AS [o.Customer] ON [t].[CustomerID] = [o.Customer].[CustomerID]
+ORDER BY [t].[OrderID]",
                 Sql);
         }
 
@@ -4244,8 +4241,8 @@ public override void OfType_Select_OfType_Select()
 FROM (
     SELECT [t0].[OrderID], [t0].[CustomerID], [t0].[EmployeeID], [t0].[OrderDate]
     FROM (
-        SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate]
-        FROM [Orders] AS [o]
+        SELECT [o2].[OrderID], [o2].[CustomerID], [o2].[EmployeeID], [o2].[OrderDate]
+        FROM [Orders] AS [o2]
     ) AS [t0]
 ) AS [t1]
 INNER JOIN [Customers] AS [o.Customer] ON [t1].[CustomerID] = [o.Customer].[CustomerID]
@@ -4537,17 +4534,17 @@ public override void Take_skip_null_coalesce_operator()
             Assert.Equal(@"@__p_0: 10
 @__p_1: 5
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t0].*
+    SELECT [t].*
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
         FROM [Customers] AS [c]
         ORDER BY COALESCE([c].[Region], 'ZZ')
-    ) AS [t0]
-    ORDER BY COALESCE([t0].[Region], 'ZZ')
+    ) AS [t]
+    ORDER BY COALESCE([t].[Region], 'ZZ')
     OFFSET @__p_1 ROWS
-) AS [t1]", 
+) AS [t0]",
                 Sql);
         }
 
@@ -4559,7 +4556,7 @@ public override void Select_take_null_coalesce_operator()
 
 SELECT TOP(@__p_0) [c].[CustomerID], [c].[CompanyName], COALESCE([c].[Region], 'ZZ') AS [Coalesce]
 FROM [Customers] AS [c]
-ORDER BY [Coalesce]", 
+ORDER BY [Coalesce]",
                 Sql);
         }
 
@@ -4573,12 +4570,12 @@ public override void Select_take_skip_null_coalesce_operator()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].*
+SELECT [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[CompanyName], COALESCE([c].[Region], 'ZZ') AS [Coalesce]
     FROM [Customers] AS [c]
     ORDER BY [Coalesce]
-) AS [t0]
+) AS [t]
 ORDER BY [Coalesce]
 OFFSET @__p_1 ROWS",
                 Sql);
@@ -4594,13 +4591,13 @@ public override void Select_take_skip_null_coalesce_operator2()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].*
+SELECT [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[CompanyName], [c].[Region]
     FROM [Customers] AS [c]
     ORDER BY COALESCE([c].[Region], 'ZZ')
-) AS [t0]
-ORDER BY COALESCE([t0].[Region], 'ZZ')
+) AS [t]
+ORDER BY COALESCE([t].[Region], 'ZZ')
 OFFSET @__p_1 ROWS",
                 Sql);
         }
@@ -4615,13 +4612,13 @@ public override void Select_take_skip_null_coalesce_operator3()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].*
+SELECT [t].*
 FROM (
     SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
     FROM [Customers] AS [c]
     ORDER BY COALESCE([c].[Region], 'ZZ')
-) AS [t0]
-ORDER BY COALESCE([t0].[Region], 'ZZ')
+) AS [t]
+ORDER BY COALESCE([t].[Region], 'ZZ')
 OFFSET @__p_1 ROWS",
                 Sql);
         }
diff --git a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/RowNumberPagingTest.cs b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/RowNumberPagingTest.cs
index 61c4eb555a4..94120ee9318 100644
--- a/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/RowNumberPagingTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.SqlServer.FunctionalTests/RowNumberPagingTest.cs
@@ -30,12 +30,12 @@ public override void Skip()
             Assert.Equal(
                 @"@__p_0: 5
 
-SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
+SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region]
 FROM (
     SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(ORDER BY [c].[CustomerID]) AS [__RowNumber__]
     FROM [Customers] AS [c]
-) AS [t0]
-WHERE [t0].[__RowNumber__] > @__p_0",
+) AS [t]
+WHERE [t].[__RowNumber__] > @__p_0",
                 Sql);
         }
 
@@ -46,12 +46,12 @@ public override void Skip_no_orderby()
             Assert.EndsWith(
                 @"@__p_0: 5
 
-SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
+SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region]
 FROM (
     SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(ORDER BY @@RowCount) AS [__RowNumber__]
     FROM [Customers] AS [c]
-) AS [t0]
-WHERE [t0].[__RowNumber__] > @__p_0",
+) AS [t]
+WHERE [t].[__RowNumber__] > @__p_0",
                 Sql);
         }
 
@@ -63,12 +63,12 @@ public override void Skip_Take()
                 @"@__p_0: 5
 @__p_1: 10
 
-SELECT [t0].[CustomerID], [t0].[Address], [t0].[City], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Country], [t0].[Fax], [t0].[Phone], [t0].[PostalCode], [t0].[Region]
+SELECT [t].[CustomerID], [t].[Address], [t].[City], [t].[CompanyName], [t].[ContactName], [t].[ContactTitle], [t].[Country], [t].[Fax], [t].[Phone], [t].[PostalCode], [t].[Region]
 FROM (
     SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region], ROW_NUMBER() OVER(ORDER BY [c].[ContactName]) AS [__RowNumber__]
     FROM [Customers] AS [c]
-) AS [t0]
-WHERE ([t0].[__RowNumber__] > @__p_0) AND ([t0].[__RowNumber__] <= (@__p_0 + @__p_1))",
+) AS [t]
+WHERE ([t].[__RowNumber__] > @__p_0) AND ([t].[__RowNumber__] <= (@__p_0 + @__p_1))",
                 Sql);
         }
 
@@ -80,13 +80,13 @@ public override void Join_Customers_Orders_Skip_Take()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].[ContactName], [t0].[OrderID]
+SELECT [t].[ContactName], [t].[OrderID]
 FROM (
     SELECT [c].[ContactName], [o].[OrderID], ROW_NUMBER() OVER(ORDER BY [o].[OrderID]) AS [__RowNumber__]
     FROM [Customers] AS [c]
     INNER JOIN [Orders] AS [o] ON [c].[CustomerID] = [o].[CustomerID]
-) AS [t0]
-WHERE ([t0].[__RowNumber__] > @__p_0) AND ([t0].[__RowNumber__] <= (@__p_0 + @__p_1))",
+) AS [t]
+WHERE ([t].[__RowNumber__] > @__p_0) AND ([t].[__RowNumber__] <= (@__p_0 + @__p_1))",
                 Sql);
         }
 
@@ -98,13 +98,13 @@ public override void Join_Customers_Orders_Projection_With_String_Concat_Skip_Ta
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT [t0].[c0], [t0].[OrderID]
+SELECT [t].[c0], [t].[OrderID]
 FROM (
     SELECT ([c].[ContactName] + ' ') + [c].[ContactTitle] AS [c0], [o].[OrderID], ROW_NUMBER() OVER(ORDER BY [o].[OrderID]) AS [__RowNumber__]
     FROM [Customers] AS [c]
     INNER JOIN [Orders] AS [o] ON [c].[CustomerID] = [o].[CustomerID]
-) AS [t0]
-WHERE ([t0].[__RowNumber__] > @__p_0) AND ([t0].[__RowNumber__] <= (@__p_0 + @__p_1))",
+) AS [t]
+WHERE ([t].[__RowNumber__] > @__p_0) AND ([t].[__RowNumber__] <= (@__p_0 + @__p_1))",
                 Sql);
         }
 
@@ -115,16 +115,16 @@ public override void Take_Skip()
             Assert.Equal(@"@__p_0: 10
 @__p_1: 5
 
-SELECT [t1].*
+SELECT [t0].*
 FROM (
-    SELECT [t0].*, ROW_NUMBER() OVER(ORDER BY [t0].[ContactName]) AS [__RowNumber__]
+    SELECT [t].*, ROW_NUMBER() OVER(ORDER BY [t].[ContactName]) AS [__RowNumber__]
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
         FROM [Customers] AS [c]
         ORDER BY [c].[ContactName]
-    ) AS [t0]
-) AS [t1]
-WHERE [t1].[__RowNumber__] > @__p_1",
+    ) AS [t]
+) AS [t0]
+WHERE [t0].[__RowNumber__] > @__p_1",
                 Sql);
         }
 
@@ -136,19 +136,19 @@ public override void Take_Skip_Distinct()
                 @"@__p_0: 10
 @__p_1: 5
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t2].*
+    SELECT [t1].*
     FROM (
-        SELECT [t0].*, ROW_NUMBER() OVER(ORDER BY [t0].[ContactName]) AS [__RowNumber__]
+        SELECT [t].*, ROW_NUMBER() OVER(ORDER BY [t].[ContactName]) AS [__RowNumber__]
         FROM (
             SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
             FROM [Customers] AS [c]
             ORDER BY [c].[ContactName]
-        ) AS [t0]
-    ) AS [t2]
-    WHERE [t2].[__RowNumber__] > @__p_1
-) AS [t1]",
+        ) AS [t]
+    ) AS [t1]
+    WHERE [t1].[__RowNumber__] > @__p_1
+) AS [t0]",
                 Sql);
         }
 
@@ -159,19 +159,19 @@ public override void Take_skip_null_coalesce_operator()
             Assert.Equal(@"@__p_0: 10
 @__p_1: 5
 
-SELECT DISTINCT [t1].*
+SELECT DISTINCT [t0].*
 FROM (
-    SELECT [t2].*
+    SELECT [t1].*
     FROM (
-        SELECT [t0].*, ROW_NUMBER() OVER(ORDER BY COALESCE([t0].[Region], 'ZZ')) AS [__RowNumber__]
+        SELECT [t].*, ROW_NUMBER() OVER(ORDER BY COALESCE([t].[Region], 'ZZ')) AS [__RowNumber__]
         FROM (
             SELECT TOP(@__p_0) [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region]
             FROM [Customers] AS [c]
             ORDER BY COALESCE([c].[Region], 'ZZ')
-        ) AS [t0]
-    ) AS [t2]
-    WHERE [t2].[__RowNumber__] > @__p_1
-) AS [t1]",
+        ) AS [t]
+    ) AS [t1]
+    WHERE [t1].[__RowNumber__] > @__p_1
+) AS [t0]",
                 Sql);
         }
 
@@ -182,16 +182,16 @@ public override void Select_take_skip_null_coalesce_operator()
             Assert.Equal(@"@__p_0: 10
 @__p_1: 5
 
-SELECT [t1].*
+SELECT [t0].*
 FROM (
-    SELECT [t0].*, ROW_NUMBER() OVER(ORDER BY [Coalesce]) AS [__RowNumber__]
+    SELECT [t].*, ROW_NUMBER() OVER(ORDER BY [Coalesce]) AS [__RowNumber__]
     FROM (
         SELECT TOP(@__p_0) [c].[CustomerID], [c].[CompanyName], COALESCE([c].[Region], 'ZZ') AS [Coalesce]
         FROM [Customers] AS [c]
         ORDER BY [Coalesce]
-    ) AS [t0]
-) AS [t1]
-WHERE [t1].[__RowNumber__] > @__p_1",
+    ) AS [t]
+) AS [t0]
+WHERE [t0].[__RowNumber__] > @__p_1",
                 Sql);
         }
 
diff --git a/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/ComplexNavigationsQuerySqliteTest.cs b/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/ComplexNavigationsQuerySqliteTest.cs
index d5aaaa09ce6..1ba0d777664 100644
--- a/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/ComplexNavigationsQuerySqliteTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/ComplexNavigationsQuerySqliteTest.cs
@@ -27,20 +27,21 @@ ORDER BY ""e"".""Id""
 INNER JOIN (
     SELECT DISTINCT ""e"".""Id""
     FROM ""Level1"" AS ""e""
-) AS ""e"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e"".""Id""
-ORDER BY ""e"".""Id"", ""l"".""Id""
+) AS ""e0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e0"".""Id""
+ORDER BY ""e0"".""Id"", ""l"".""Id""
 
-SELECT ""l"".""Id"", ""l"".""Level2_Optional_Id"", ""l"".""Level2_Required_Id"", ""l"".""Name"", ""l"".""OneToMany_Optional_InverseId"", ""l"".""OneToMany_Optional_Self_InverseId"", ""l"".""OneToMany_Required_InverseId"", ""l"".""OneToMany_Required_Self_InverseId"", ""l"".""OneToOne_Optional_PK_InverseId"", ""l"".""OneToOne_Optional_SelfId""
-FROM ""Level3"" AS ""l""
+SELECT ""l0"".""Id"", ""l0"".""Level2_Optional_Id"", ""l0"".""Level2_Required_Id"", ""l0"".""Name"", ""l0"".""OneToMany_Optional_InverseId"", ""l0"".""OneToMany_Optional_Self_InverseId"", ""l0"".""OneToMany_Required_InverseId"", ""l0"".""OneToMany_Required_Self_InverseId"", ""l0"".""OneToOne_Optional_PK_InverseId"", ""l0"".""OneToOne_Optional_SelfId""
+FROM ""Level3"" AS ""l0""
 INNER JOIN (
-    SELECT DISTINCT ""e"".""Id"", ""l"".""Id"" AS ""Id0""
+    SELECT DISTINCT ""e0"".""Id"", ""l"".""Id"" AS ""Id0""
     FROM ""Level2"" AS ""l""
     INNER JOIN (
         SELECT DISTINCT ""e"".""Id""
         FROM ""Level1"" AS ""e""
-    ) AS ""e"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e"".""Id""
-) AS ""l0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""l0"".""Id0""
-ORDER BY ""l0"".""Id"", ""l0"".""Id0""", Sql);
+    ) AS ""e0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e0"".""Id""
+) AS ""l1"" ON ""l0"".""OneToMany_Optional_InverseId"" = ""l1"".""Id0""
+ORDER BY ""l1"".""Id"", ""l1"".""Id0""",
+                Sql);
         }
 
         public override void Multi_level_include_correct_PK_is_chosen_as_the_join_predicate_for_queries_that_join_same_table_multiple_times()
@@ -57,38 +58,39 @@ ORDER BY ""e"".""Id""
 INNER JOIN (
     SELECT DISTINCT ""e"".""Id""
     FROM ""Level1"" AS ""e""
-) AS ""e"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e"".""Id""
-ORDER BY ""e"".""Id"", ""l"".""Id""
+) AS ""e0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e0"".""Id""
+ORDER BY ""e0"".""Id"", ""l"".""Id""
 
-SELECT ""l"".""Id"", ""l"".""Level2_Optional_Id"", ""l"".""Level2_Required_Id"", ""l"".""Name"", ""l"".""OneToMany_Optional_InverseId"", ""l"".""OneToMany_Optional_Self_InverseId"", ""l"".""OneToMany_Required_InverseId"", ""l"".""OneToMany_Required_Self_InverseId"", ""l"".""OneToOne_Optional_PK_InverseId"", ""l"".""OneToOne_Optional_SelfId"", ""l1"".""Id"", ""l1"".""Level1_Optional_Id"", ""l1"".""Level1_Required_Id"", ""l1"".""Name"", ""l1"".""OneToMany_Optional_InverseId"", ""l1"".""OneToMany_Optional_Self_InverseId"", ""l1"".""OneToMany_Required_InverseId"", ""l1"".""OneToMany_Required_Self_InverseId"", ""l1"".""OneToOne_Optional_PK_InverseId"", ""l1"".""OneToOne_Optional_SelfId""
-FROM ""Level3"" AS ""l""
+SELECT ""l0"".""Id"", ""l0"".""Level2_Optional_Id"", ""l0"".""Level2_Required_Id"", ""l0"".""Name"", ""l0"".""OneToMany_Optional_InverseId"", ""l0"".""OneToMany_Optional_Self_InverseId"", ""l0"".""OneToMany_Required_InverseId"", ""l0"".""OneToMany_Required_Self_InverseId"", ""l0"".""OneToOne_Optional_PK_InverseId"", ""l0"".""OneToOne_Optional_SelfId"", ""l2"".""Id"", ""l2"".""Level1_Optional_Id"", ""l2"".""Level1_Required_Id"", ""l2"".""Name"", ""l2"".""OneToMany_Optional_InverseId"", ""l2"".""OneToMany_Optional_Self_InverseId"", ""l2"".""OneToMany_Required_InverseId"", ""l2"".""OneToMany_Required_Self_InverseId"", ""l2"".""OneToOne_Optional_PK_InverseId"", ""l2"".""OneToOne_Optional_SelfId""
+FROM ""Level3"" AS ""l0""
 INNER JOIN (
-    SELECT DISTINCT ""e"".""Id"", ""l"".""Id"" AS ""Id0""
+    SELECT DISTINCT ""e0"".""Id"", ""l"".""Id"" AS ""Id0""
     FROM ""Level2"" AS ""l""
     INNER JOIN (
         SELECT DISTINCT ""e"".""Id""
         FROM ""Level1"" AS ""e""
-    ) AS ""e"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e"".""Id""
-) AS ""l0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""l0"".""Id0""
-INNER JOIN ""Level2"" AS ""l1"" ON ""l"".""OneToMany_Required_InverseId"" = ""l1"".""Id""
-ORDER BY ""l0"".""Id"", ""l0"".""Id0"", ""l1"".""Id""
+    ) AS ""e0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e0"".""Id""
+) AS ""l1"" ON ""l0"".""OneToMany_Optional_InverseId"" = ""l1"".""Id0""
+INNER JOIN ""Level2"" AS ""l2"" ON ""l0"".""OneToMany_Required_InverseId"" = ""l2"".""Id""
+ORDER BY ""l1"".""Id"", ""l1"".""Id0"", ""l2"".""Id""
 
-SELECT ""l"".""Id"", ""l"".""Level2_Optional_Id"", ""l"".""Level2_Required_Id"", ""l"".""Name"", ""l"".""OneToMany_Optional_InverseId"", ""l"".""OneToMany_Optional_Self_InverseId"", ""l"".""OneToMany_Required_InverseId"", ""l"".""OneToMany_Required_Self_InverseId"", ""l"".""OneToOne_Optional_PK_InverseId"", ""l"".""OneToOne_Optional_SelfId""
-FROM ""Level3"" AS ""l""
+SELECT ""l3"".""Id"", ""l3"".""Level2_Optional_Id"", ""l3"".""Level2_Required_Id"", ""l3"".""Name"", ""l3"".""OneToMany_Optional_InverseId"", ""l3"".""OneToMany_Optional_Self_InverseId"", ""l3"".""OneToMany_Required_InverseId"", ""l3"".""OneToMany_Required_Self_InverseId"", ""l3"".""OneToOne_Optional_PK_InverseId"", ""l3"".""OneToOne_Optional_SelfId""
+FROM ""Level3"" AS ""l3""
 INNER JOIN (
-    SELECT DISTINCT ""l0"".""Id"", ""l0"".""Id0"", ""l1"".""Id"" AS ""Id1""
-    FROM ""Level3"" AS ""l""
+    SELECT DISTINCT ""l1"".""Id"", ""l1"".""Id0"", ""l2"".""Id"" AS ""Id1""
+    FROM ""Level3"" AS ""l0""
     INNER JOIN (
-        SELECT DISTINCT ""e"".""Id"", ""l"".""Id"" AS ""Id0""
+        SELECT DISTINCT ""e0"".""Id"", ""l"".""Id"" AS ""Id0""
         FROM ""Level2"" AS ""l""
         INNER JOIN (
             SELECT DISTINCT ""e"".""Id""
             FROM ""Level1"" AS ""e""
-        ) AS ""e"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e"".""Id""
-    ) AS ""l0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""l0"".""Id0""
-    INNER JOIN ""Level2"" AS ""l1"" ON ""l"".""OneToMany_Required_InverseId"" = ""l1"".""Id""
-) AS ""l1"" ON ""l"".""OneToMany_Optional_InverseId"" = ""l1"".""Id1""
-ORDER BY ""l1"".""Id"", ""l1"".""Id0"", ""l1"".""Id1""", Sql);
+        ) AS ""e0"" ON ""l"".""OneToMany_Optional_InverseId"" = ""e0"".""Id""
+    ) AS ""l1"" ON ""l0"".""OneToMany_Optional_InverseId"" = ""l1"".""Id0""
+    INNER JOIN ""Level2"" AS ""l2"" ON ""l0"".""OneToMany_Required_InverseId"" = ""l2"".""Id""
+) AS ""l20"" ON ""l3"".""OneToMany_Optional_InverseId"" = ""l20"".""Id1""
+ORDER BY ""l20"".""Id"", ""l20"".""Id0"", ""l20"".""Id1""",
+                Sql);
         }
 
         private static string Sql => TestSqlLoggerFactory.Sql;
diff --git a/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/QuerySqliteTest.cs b/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/QuerySqliteTest.cs
index 66a9e41cdfc..b2ab38c3636 100644
--- a/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/QuerySqliteTest.cs
+++ b/test/Microsoft.EntityFrameworkCore.Sqlite.FunctionalTests/QuerySqliteTest.cs
@@ -28,14 +28,14 @@ public override void Take_Skip()
             base.Take_Skip();
 
             Assert.Contains(
-                @"SELECT ""t0"".*
+                @"SELECT ""t"".*
 FROM (
     SELECT ""c"".""CustomerID"", ""c"".""Address"", ""c"".""City"", ""c"".""CompanyName"", ""c"".""ContactName"", ""c"".""ContactTitle"", ""c"".""Country"", ""c"".""Fax"", ""c"".""Phone"", ""c"".""PostalCode"", ""c"".""Region""
     FROM ""Customers"" AS ""c""
     ORDER BY ""c"".""ContactName""
     LIMIT @__p_0
-) AS ""t0""
-ORDER BY ""t0"".""ContactName""
+) AS ""t""
+ORDER BY ""t"".""ContactName""
 LIMIT -1 OFFSET @__p_1",
                 Sql);
         }