Tuve que revisar algún código, y encontré algo que alguien hizo, y no puedo pensar en una razón, mi camino es mejor. Y probablemente no lo es, entonces, ¿cuál es mejor/más seguro/más eficiente?MAX vs Top 1 - ¿cuál es mejor?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
O
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
me habría ido con la segunda opción, pero no estoy seguro de por qué, y si eso es correcto.
SQL Server TOP 1 se comporta de forma diferente que Oracle usando rowNum = 1. Oracle realmente capta el primero que encuentra ANTES de ordenar, por lo que este método es válido solo para SQL Server. Otro beneficio de este TOP 1 vs Max() es que puede tomar tantas columnas como desee, siempre y cuando incluya los pedidos aplicables. Probé usando Max() y encontré incluso con GROUP BY que no parecía producir solo 1 registro. Tal vez alguien como Mojo más fuerte pueda decir cómo obtener solo una fila si quiere obtener la parte superior de varias columnas sin una subconsulta. – gordon