アプリケーションには 2 つのテーブルがあり、どちらにもShowOrder
列があります。アプリケーションで NHibernate を使用し、HQL を使用して、これら 2 つのテーブルShowOrder
をそれぞれ最初のテーブルと 2 番目のテーブルで並べ替えます。
これが私のクエリの簡略版です。
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 サーバーが上記のクエリを実行しようとするとエラーが発生します。例外は言う:
order by リストで 1 つの列が複数回指定されています
pr.ShowOrder
エイリアスなしで選択すると、すべて問題ありません。
選択リストにエイリアスがある場合ShowOrder
、SQL Server はテーブル エイリアスを無視し、pr.ShowOrder
とprg.ShowOrder
が同じであると想定しているようです。