2013-04-17 17 views
7

Jestem całkiem nowy dla SQL Server. Teraz natknąłem się na takie zapytanie:TSQL: zamówienie przez asc bez nazwy kolumny

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY ASC 

Brak nazwy kolumny podanej w klauzuli order by. czy to możliwe? SSMS mówi nie.

Jörg

+4

Nie jest to możliwe, musisz umieścić 'order_by_expression' w klauzuli [**' ORDER BY' **] (http://msdn.microsoft.com/en-us/library/ms188385.aspx). Ale *** dlaczego *** chcesz to zrobić? W jaki sposób SQL Server powinien "ORDER BY", która kolumna w tym przypadku? –

+1

Skąd bierzesz to pytanie? –

+0

Nigdy nie działało to dla mnie. –

Odpowiedz

10

to chyba pomyłka - trzeba określić co zamawiania przez; może to być nazwa kolumny, wyrażenie lub numer kolumny na wyjściu. Jest bardzo prawdopodobne, że kwerenda widzieliście był jednym z ostatnich, które po prostu pominięto numer kolumny 1 - tak:

SELECT country FROM Hovercraft.Orders GROUP BY country ORDER BY 1 ASC 

- tak byłoby zamówić przez zawartość pierwszej kolumnie wyjścia (tj. country).

+5

+1 Nie wycelowany w ciebie Mark, ale dla każdego, kto to czyta, porządkowanie według pozycji porządkowej jest mile widziane w kodzie produkcji - SQL Server MVP Aaron Bertrand ma wpis na blogu wyjaśniający dlaczego: [Złe nawyki do skopania: ORDER BY ordinal] (http : //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/06/bad-habits-to-kick-order-by-ordinal.aspx) – Bridge

+0

Dzięki, Mark.Chciałem tylko mieć pewność, że coś przeoczyłem. –

1

Zgadzam się z @Mahmoud Gamal. Ale również, że to możliwe, aby napisać taki siekać takiego -

SELECT o.country, const_column = 1 
FROM Hovercraft.Orders o 
GROUP BY o.country 
ORDER BY const_column ASC 

W tym przypadku sortowanie zostanie wykonane, ale kolejność Wiersze nie zostaną zmienione.

W MS SQL 2005:

Proff for @Martin Smith

W MS SQL 2012:

Proff for @Martin Smith

+1

Nie widzę żadnego sortowania wykonanego, gdy próbuję 'SELECT *, const_column = 1 FROM master..spt_values ​​ORDER BY const_column ASC' (i nie widzę jak to jest istotne dla pytania w każdym razie) –

+0

Proszę powiedzieć, za co ustawić minus? @ Jörg Weigel zapytał "Nie ma nazwy kolumny podanej w klauzuli order by?", Więc napisałem zapytanie tylko na przykład, które sortuje stałą wartość. – Devart

+0

Testowałem ten problem w wersji serwerowej 2005. – Devart

0

To nie jest możliwe! ..

Sortuj według klauzuli zawsze wymagają nazwę kolumny lub numer kolumny.

Czy mógłbyś mi odpowiedzieć, dlaczego chcesz tego rodzaju sytuacji, myślę, że pracujesz z dynamicznym zapytaniem, albo proszę, daj mi znać.

Zgodnie ze standardem SQL nie jest to możliwe.

Dzięki.

Powiązane problemy