Wir haben zwei Tabellen in unserer Anwendung, die beide eine ShowOrder
-Spalte haben. In unserer Anwendung verwenden wir NHibernate und mit HQL verknüpfen wir diese beiden Tabellen geordnet nach ShowOrder
der ersten Tabelle und der zweiten Tabelle.
Hier ist eine vereinfachte Version meiner Abfrage:
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
Im Allgemeinen funktioniert unsere Anwendung ohne Probleme. Aber wir haben eine alte Anwendung und eine Konvertierungsroutine, um ihre Datenbank in unsere neue Anwendungsdatenbank zu konvertieren.
Immer wenn wir eine alte Datenbank in unsere neue Datenbank konvertieren, tritt ein Fehler auf, wenn der SQL-Server die obige Abfrage ausführen möchte. Die Ausnahme besagt:
Eine Spalte wurde mehr als einmal in der Order-by-Liste angegeben
Wenn wir pr.ShowOrder
ohne Alias auswählen, ist alles in Ordnung.
Es scheint, dass wenn es einen ShowOrder
Alias in der Select-Liste gibt, ignoriert der SQL-Server Tabellenaliasse und nimmt an, dass pr.ShowOrder
und prg.ShowOrder
dasselbe sind.