у нас есть представление в нашей базе данных, в котором есть ORDER BY.
Теперь я понимаю, что представления, как правило, не упорядочены, потому что разные люди могут использовать его для разных целей и хотят, чтобы он был по-разному упорядочен. Однако это представление используется для варианта использования VERY SPECIFIC , который требует определенного порядка. (Это командный зачет футбольной лиги.)
База данных Sql Server 2008 Express, v.10.0.1763.0 в Windows Server 2003 R2.
Вид определяется так:
CREATE VIEW season.CurrentStandingsOrdered
AS
SELECT TOP 100 PERCENT *, season.GetRanking(TEAMID) RANKING
FROM season.CurrentStandings
ORDER BY
GENDER, TEAMYEAR, CODE, POINTS DESC,
FORFEITS, GOALS_AGAINST, GOALS_FOR DESC,
DIFFERENTIAL, RANKING
Возвращает:
GENDER, TEAMYEAR, CODE, TEAMID, CLUB, NAME,
WINS, LOSSES, TIES, GOALS_FOR, GOALS_AGAINST,
DIFFERENTIAL, POINTS, FORFEITS, RANKING
Теперь, когда я запускаю SELECT для представления, он упорядочивает результаты по GENDER, TEAMYEAR, CODE, TEAMID . Обратите внимание, что он упорядочен по TEAMID вместо POINTS , как указано в предложении order by.
Однако, если я скопирую инструкцию SQL и выполню ее точно так же, как в новом окне запроса, он упорядочится правильно, как указано в предложении ORDER BY .