【发布时间】:2010-11-24 22:14:53
【问题描述】:
我们的应用程序中有两个表,它们都有一个ShowOrder 列。我们在我们的应用程序中使用 NHibernate 并使用 HQL 我们将这两个表分别按第一个表和第二个表的ShowOrder 排序。
这是我的查询的简化版本:
SELECT pr.Id as Id,pr.Title as Title, pr.ShowOrder as ShowOrder
FROM Process pr
INNER JOIN ProcessGroup prg ON pr.GroupId=prg.Id
ORDER BY prg.ShowOrder,pr.ShowOrder
一般来说,我们的应用程序可以正常运行。但是我们有一个旧应用程序和一个转换例程,用于将其数据库转换为我们的新应用程序数据库。
每当我们将旧数据库转换为新数据库时,当 SQL 服务器要执行上述查询时,就会发生错误。异常说:
按列表顺序多次指定一列
如果我们选择不带别名的pr.ShowOrder,一切正常。
似乎如果选择列表中有ShowOrder 别名,SQL Server 会忽略表别名并假定pr.ShowOrder 和prg.ShowOrder 相同。
【问题讨论】:
标签: sql-server sql-order-by alias