Musiałem przejrzeć kod i natknąłem się na coś, co ktoś zrobił, i nie mogę wymyślić przyczyny, dla której moja droga jest lepsza. I prawdopodobnie nie jest, więc, który jest lepszy/bezpieczniejszy/bardziej wydajny?MAX vs Top 1 - co jest lepsze?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
LUB
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
bym poszedł z 2 opcji, ale nie jestem pewien, dlaczego, a jeśli to prawda.
SQL Server TOP 1 zachowuje się inaczej niż Oracle przy użyciu rowNum = 1. Oracle faktycznie pobiera pierwszą, którą znajdzie PRZED zamówieniem, więc ta metoda jest ważna tylko dla SQL Server. Kolejną zaletą tego TOP 1 vs Max() jest to, że możesz pobrać tyle kolumn, ile chcesz, o ile uwzględnisz odpowiednią kolejność. Przetestowałem używając Max() i znalazłem nawet w GROUP BY, że nie wydaje się, aby uzyskać tylko 1 rekord. Być może ktoś jako silniejszy mojo może powiedzieć, jak uzyskać tylko jeden wiersz, jeśli chcesz uzyskać szczyt z wielu kolumn bez kwerendy? – gordon